2010-01-28 2 views
44

È possibile configurare diversi livelli di registro per un singolo Logger basato sull'appender?Livello log per appender per un singolo Logger

Mi rendo conto che questo è simile a questo question, e questo è quanto ho già avuto me stesso, ma il problema con questo è che la soglia si applica a tutti i logger che accedono a quell'appender, mentre io voglio solo la soglia da applicare a un singolo logger.

cioè Finora ho qualcosa di simile:

log4j.rootLogger=WARN, stdout 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Threshold=WARN 
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout 

log4j.logger.mylogger=DEBUG,logfile 
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.logfile.DatePattern=${roll.pattern.daily} 
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout 
log4j.appender.logfile.layout.ConversionPattern=%d{${datestamp}} [%t] %-5p %C{2} - %m%n 
log4j.appender.logfile.File=mylogfile.log 

voglio myLogger messaggi di debug da inviare al file di log appender, ma voglio anche myLogger messaggi info per essere inviati a l'appender stdout (ma per tutti gli altri logger solo WARN ings). L'utilizzo della Soglia per limitare lo stdout a WARN limita l'output di mylogger.

risposta

46

Aha, ho risolto modificando

log4j.appender.stdout.Threshold=WARN 

a

log4j.appender.stdout.Threshold=INFO 

Avrebbe dovuto essere più attenti turno prima volta.

+9

Si consiglia di utilizzare il formato XML, è molto più facile da capire, IMO – skaffman

+0

concordato e espone funzionalità non disponibili tramite file di proprietà. – Joel

+0

Bello! Questo mi è stato molto utile un anno dopo :-D L'ho fatto in fase di esecuzione però, dall'interno dell'applicazione, in questo modo: myAppender.setThreshold (Level.INFO). – Jochem