Ho una configurazione di log4J in cui si suppone che il logger di root registri i messaggi di livello ERROR e superiori alla console e un altro logger registri tutto su syslog.log4j rootLogger sembra ereditare il livello di registro di un altro registratore. Perché?
log4j.properties è:
# Root logger option
log4j.rootLogger=ERROR,R
log4j.appender.R=org.apache.log4j.ConsoleAppender
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d %p %t %c - %m%n
log4j.logger.SGSearch=DEBUG,SGSearch
log4j.appender.SGSearch=org.apache.log4j.net.SyslogAppender
log4j.appender.SGSearch.SyslogHost=localhost
log4j.appender.SGSearch.Facility=LOCAL6
log4j.appender.SGSearch.layout=org.apache.log4j.PatternLayout
log4j.appender.SGSearch.layout.ConversionPattern=[%-5p] %m%n
Nel codice che fanno
private static final Logger logger = Logger.getLogger("SGSearch");
.
.
.
logger.info("Commencing snapshot index [" + args[1] + " -> " + args[2] + "]");
Quello che sta accadendo è che ho la registrazione della console per tutti i livelli di registrazione. Quello che sembra accadere è che il livello di SGSearch prevale in qualche modo sul livello impostato per il logger root. Non riesco a capirlo.
mi hanno confermato che Log4J sta leggendo le proprietà del file penso che sia, e nessun altro (tramite l'opzione -Dlog4j.debug
)
Ho riscontrato questo stesso problema/confusione. Vedi http://stackoverflow.com/questions/3023690/why-is-log4j-rootlogger-not-filtering-log-events-according-to-event-level. –