pardon se la domanda è troppo banale. Sono completamente nuovo a log4j. Ho visto che ci sono due tag e tag, che si riferiscono a vari appendici. Dire che voglio registrare le informazioni nella mia base di codice in un file, inviarlo alla mia email e stamparlo alla console. Voglio il livello impostato per informazioni. Non è sufficiente avere un singolo tag che abbia riferimenti ai tre appendici? (File, email e console) perché ne abbiamo bisogno di un altro per lo stesso?perché abbiamo bisogno di root e logger in log4j.xml
risposta
È sufficiente.
In log4j un logger è associato a un pacchetto oa volte con una classe particolare. Il pacchetto/classe di un logger è definito dall'attributo "nome". Un logger registra i messaggi nel suo pacchetto e anche in tutti i pacchetti figlio e le loro classi. L'unica eccezione è il logger root che registra i messaggi per tutte le classi nell'applicazione.
Un logger ha anche un livello e può avere uno o più appendici (destinazioni di registrazione) collegati ad esso.
Nel prossimo esempio abbiamo due taglialegna:
- il logger principale che registra i messaggi con livello INFO o superiore in tutti i pacchetti per le diverse mete: console, e-mail e file,
"com.foo" logger che registra i messaggi con livello WARN o superiore nel pacchetto "com.foo" e i relativi pacchetti figlio in un altro file.
<log4j:configuration> <!-- Declaration of appenders FILE, MAIL, CONSOLE and ANOTHERFILE --> ... <!-- --> <logger name="com.foo"> <level value="warn"/> <appender-ref ref="ANOTHERFILE" /> </logger> <root> <priority value ="info" /> <appender-ref ref="FILE" /> <appender-ref ref="MAIL" /> <appender-ref ref="CONSOLE" /> </root> </log4j:configuration>
Si dovrebbe read more circa i principi fondamentali log4j.
Il logger di root registra anche i messaggi delle classi "com.foo"? –
@ mmc18 Sì, sicuramente. Tutti i messaggi scritti sull'appender ANOTHERFILE sono stati scritti anche negli appendici del root logger. –
Solo una nota aggiuntiva, è possibile impedire che i messaggi inviati ad ANOTHERFILE vengano inviati al registratore principale impostando la proprietà di additività del registratore su false. Pensa ad esso come un'eccezione, che sale da un livello inferiore a quello superiore (radice). l'addivity è il "catch" senza un "throw" – JReader
Voglio dire, non è sufficiente avere un singolo tag radice? che ha tre riferimenti agli appendici? – parameswar