Utiliser les logs de FreeRDP
Souvent en utilisant FreeRDP, on se retrouve à devoir augmenter le niveau des traces et à collecter un peu plus de logs que d'ordinaire. Et évidement la plupart du temps, ça ne tient pas dans l'historique du terminal, ou bien on veut que ça se fasse rapidement (l'affichage console peut vraiment ralentir FreeRDP). On peut aussi être sur une machine à distance, et vouloir récupérer tout ça via le réseau.
Comme à chaque fois que je veux utiliser les capacités de WLog (le système de logs de FreeRDP), je dois aller regarder le code source,
je me suis dit qu'un petit billet sur le sujet serait l'occasion idéale de se souvenir de tout ça.
Utilisation de Wlog
La verbosité des logs est controlée par la variable d'environnement WLOG_LEVEL
(dans FreeRDP on peut aussi se servir
du paramètre en ligne de commande /log-level
). On peut y mettre les valeurs FATAL
, ERROR
, WARN
, INFO
, DEBUG
ou TRACE
.
Le système fonctionne comme log4j avec des appenders, on dispose de plusieurs type d'appenders: fichier, sortie standard,
réseau, syslog ou systemd. Le type d'appender instancié est donné par la variable d'environnement WLOG_APPENDER
.
Stockage en fichier
Pour cela, on utilise un appender de type FILE
, et les variables d'environnement WLOG_FILEAPPENDER_OUTPUT_FILE_PATH
et
WLOG_FILEAPPENDER_OUTPUT_FILE_NAME
donnent respectivement le répertoire et le nom du fichier vers lequel seront stockés les
logs.
Par exemple, pour des logs dans /tmp/output.log
:
WLOG_APPENDER=file WLOG_FILEAPPENDER_OUTPUT_FILE_NAME=output.log WLOG_FILEAPPENDER_OUTPUT_FILE_PATH=/tmp xfreerdp /v:....
Exporter les logs via le réseau
J'ai déjà utilisé cette fonctionnalité en faisant tourner FreeRDP sur un client léger avec peu de stockage et peu de CPU. Envoyer les logs vers une autre machine permet de résoudre les deux problèmes d'un coup.
Pour utiliser l'appender réseau, on utilise le type udp
et WLOG_UDP_TARGET
permet de donner la cible des paquets qui seront
envoyés sous forme de datagrammes UDP.
Par exemple, on lance FreeRDP de cette manière:
WLOG_APPENDER=udp WLOG_UDP_TARGET=192.168.0.2:20000 xfreerdp /v:....
Et on réceptionne les logs avec netcat sur l'autre machine (en 192.168.0.2
):
nc -ul -p20000
Conclusion
Maintenant vous savez tout sur les logs dans FreeRDP.