web-dev-qa-db-fra.com

log4j: Comment utiliser SocketAppender?

J'ai une réponse sur la façon d'utiliser SocketAppender (j'en ai besoin pour rassembler les journaux du système distribué), mais je suis nouveau sur log4j et je ne sais pas comment utiliser cet exemple de code.

Je devrais probablement avoir log4j-server.properties comme ça:

log4j.appender.SERVER=org.Apache.log4j.net.SocketAppender
log4j.appender.SA.Port=4712
log4j.appender.SA.RemoteHost=loghost
log4j.appender.SA.ReconnectionDelay=10000

Mais je ne sais toujours pas comment démarrer le serveur (comment utiliser cette ligne)

org.Apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties

Et quel est le plus important: Où\Comment puis-je voir mes journaux?

20
alicjasalamon

Vous pouvez exécuter le serveur en utilisant

Java -classpath log4j.jar org.Apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties

SimpleSocketServer reçoit les événements de journalisation envoyés au numéro de port spécifié par le SocketAppender distant, et les enregistre comme s'ils étaient générés localement, selon la configuration que vous fournissez dans log4j-server.properties. C'est à vous de configurer les annexes de la console/du fichier/du fichier roulant et de les attacher aux enregistreurs appropriés comme vous le feriez si vous effectuiez la journalisation directement dans le processus d'origine plutôt que de canaliser les événements de journal sur une prise réseau. C'est à dire. si vous créez actuellement des fichiers journaux locaux avec quelque chose comme:

log4j.rootLogger=DEBUG, file
log4j.appender.file=org.Apache.log4j.RollingFileAppender
log4j.appender.file.File=logfile.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.Apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%d] [%t] [%m]%n

alors vous le changeriez pour que le côté expéditeur log4j.properties dit simplement

log4j.rootLogger=DEBUG, server
log4j.appender.server=org.Apache.log4j.net.SocketAppender
log4j.appender.server.Port=4712
log4j.appender.server.RemoteHost=loghost
log4j.appender.server.ReconnectionDelay=10000

et côté serveur log4j-server.properties contient les définitions qui étaient auparavant du côté de l'envoi:

log4j.rootLogger=DEBUG, file
log4j.appender.file=org.Apache.log4j.RollingFileAppender
log4j.appender.file.File=logfile.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.Apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%d] [%t] [%m]%n

En particulier, notez qu'il est inutile de spécifier une mise en page sur le SocketAppender du côté émetteur - ce qui passe sur le réseau est tout l'objet d'événement de journalisation, c'est le côté récepteur qui est responsable de la mise en page.

45
Ian Roberts

Pour démarrer la commande simple du serveur ci-dessous dans l'invite de commande et le serveur sera opérationnel:

Java -classpath C: Users.m2repositorylog4jlog4j1.2.17log4j-1.2.17.jar org.Apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties

N'oubliez pas de spécifier le chemin correct de log4j.jar dans votre système.

0
madhu