Mam konfigurację log4J, w której dziennik główny ma logować komunikaty o poziomie błędu i powyżej do konsoli, a inny program rejestruje wszystko do syslog.log4j rootLogger wydaje się dziedziczyć poziom dziennika innego rejestratora. Czemu?
log4j.properties jest:
# 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
W kodzie zrobić
private static final Logger logger = Logger.getLogger("SGSearch");
.
.
.
logger.info("Commencing snapshot index [" + args[1] + " -> " + args[2] + "]");
Co się dzieje jest, że dostanę rejestrowanie konsoli dla wszystkich poziomów logowania. Wygląda na to, że poziom SGSearch w pewnym sensie nadpisuje poziom ustawiony dla loginu root. Nie mogę tego rozgryźć.
I potwierdziły, że Log4J czyta plik właściwości myślę, że jest, a nie inne (poprzez opcję -Dlog4j.debug
)
Napotkałem ten sam problem/zamieszanie. Zobacz http://stackoverflow.com/questions/3023690/why-is-log4j-rootlogger-not-filtering-log-events-cording-to-event-level. –