2012-08-01 14 views
19

Ho un answer su come usare SocketAppender (ne ho bisogno per raccogliere i registri dal sistema distribuito), ma sono nuovo su log4j e non ho idea di come usare quel codice di esempio.log4j: Come usare SocketAppender?

Probabilmente avrei dovuto log4j-server.properties del genere:

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

Ma io ancora non so come avviare il server (come utilizzare questa linea)

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

E qual è il più importante: Dove \ Come posso visualizzare i miei registri?

+0

Questi sono chiamati argomenti della riga di comando. – Woot4Moo

risposta

41

È possibile eseguire il server utilizzando

java -classpath log4j.jar org.apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties 

Il SimpleSocketServer riceve la registrazione degli eventi inviati al numero di porta specificato dal telecomando SocketAppender, e registra le come se fossero generati localmente, in base alla configurazione fornitura in log4j-server.properties. Spetta a te configurare i relativi file di console/file/appendici e collegarli ai relativi logger come faresti se esegui la registrazione direttamente nel processo originale anziché eseguire il piping degli eventi di registro su un socket di rete. Cioè se si sta creando file di log locali con qualcosa di simile:

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 

allora si dovrebbe cambiare in modo che il lato di invio log4j.properties dice semplicemente

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 

e il lato server log4j-server.properties contiene le definizioni che in precedenza erano sul lato di invio:

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 

In particolare, nota che non c'è nessun punto che specifica un layout sul SocketAppender sul lato dell'invio: ciò che succede sulla rete è l'intero oggetto evento di registrazione, è il lato ricevente che è responsabile del layout.

+0

Grazie mille, funziona :) ma ho ancora una domanda. Ora ricevo registri aggiuntivi come '[2012-08-01 15: 20: 39,950] [main] [Connesso a client a /127.0.0.1] [2012-08-01 15: 20: 39,950] [main] [Starting nuovo nodo socket.] [2012-08-01 15: 20: 39,950] [main] [In attesa di accettare un nuovo client.] 'Cosa devo fare per evitare di registrare questo? – alicjasalamon

+1

Questi sembrano messaggi generati dallo stesso server socket. Dovrai perfezionare un po 'la configurazione di logging. A seconda del livello di questi messaggi aggiuntivi, potrebbe essere sufficiente impostare il tuo logger root sul lato server su ERROR anziché su DEBUG e quindi aggiungere "log4j.logger.com.example = DEBUG" o qualsiasi cosa sia appropriata per i logger che il tuo mittente è accedere a. –

+0

che dire di un supporto per Log4J 2? – Donatello

0

Per avviare il semplice tipo di server sotto comando nel prompt dei comandi e server sarà attivo e funzionante:

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

Si prega di non dimenticare di specificare il percorso corretto di log4j.jar nel proprio sistema.