Java log4j2 configuration using different files for different log levels

2 weeks ago 14
ARTICLE AD BOX

i have a configuration for log4j2 as a property file which looks like this:

log4j2.properties

property.pattern = %d [%t] %F %-5L %-5p %c - %m%n appender.0.type = Console appender.0.name = ALL_LOG_CONSOLE appender.0.layout.type = PatternLayout appender.0.layout.pattern = ${pattern} appender.1.type = File appender.1.name = ALL_LOG_FILE appender.1.fileName = logs/all.log appender.1.layout.type = PatternLayout appender.1.layout.pattern = ${pattern} appender.2.type = File appender.2.name = OFF_LOG_FILE appender.2.fileName = logs/off.log appender.2.layout.type = PatternLayout appender.2.layout.pattern = ${pattern} appender.3.type = File appender.3.name = FATAL_LOG_FILE appender.3.fileName = logs/fatal.log appender.3.layout.type = PatternLayout appender.3.layout.pattern = ${pattern} appender.4.type = File appender.4.name = ERROR_LOG_FILE appender.4.fileName = logs/error.log appender.4.layout.type = PatternLayout appender.4.layout.pattern = ${pattern} appender.5.type = File appender.5.name = WARN_LOG_FILE appender.5.fileName = logs/warn.log appender.5.layout.type = PatternLayout appender.5.layout.pattern = ${pattern} appender.6.type = File appender.6.name = INFO_LOG_FILE appender.6.fileName = logs/info.log appender.6.layout.type = PatternLayout appender.6.layout.pattern = ${pattern} appender.7.type = File appender.7.name = DEBUG_LOG_FILE appender.7.fileName = logs/debug.log appender.7.layout.type = PatternLayout appender.7.layout.pattern = ${pattern} appender.8.type = File appender.8.name = TRACE_LOG_FILE appender.8.fileName = logs/trace.log appender.8.layout.type = PatternLayout appender.8.layout.pattern = ${pattern} logger.0.name = de.hoelzer.all.log.console logger.0.level = ALL logger.0.appenderRef.0.ref = ALL_LOG_CONSOLE logger.0.appenderRef.0.level = ALL logger.1.name = de.hoelzer.all.log.file logger.1.level = ALL logger.1.appenderRef.0.ref = ALL_LOG_CONSOLE logger.1.appenderRef.0.level = ALL logger.2.name = de.hoelzer.off.log.file logger.2.level = OFF logger.2.appenderRef.0.ref = OFF_LOG_FILE logger.2.appenderRef.0.level = OFF logger.3.name = de.hoelzer.fatal.log.file logger.3.level = FATAL logger.3.appenderRef.0.ref = FATAL_LOG_FILE logger.3.appenderRef.0.level = FATAL logger.4.name = de.hoelzer.error.log.file logger.4.level = ERROR logger.4.appenderRef.0.ref = ERROR_LOG_FILE logger.4.appenderRef.0.level = ERROR logger.5.name = de.hoelzer.warn.log.file logger.5.level = WARN logger.5.appenderRef.0.ref = WARN_LOG_FILE logger.5.appenderRef.0.level = WARN logger.6.name = de.hoelzer.info.log.file logger.6.level = INFO logger.6.appenderRef.0.ref = INFO_LOG_FILE logger.6.appenderRef.0.level = INFO logger.7.name = de.hoelzer.debug.log.file logger.7.level = DEBUG logger.7.appenderRef.0.ref = DEBUG_LOG_FILE logger.7.appenderRef.0.level = DEBUG logger.8.name = de.hoelzer.trace.log.file logger.8.level = TRACE logger.8.appenderRef.0.ref = TRACE_LOG_FILE logger.8.appenderRef.0.level = TRACE rootLogger.level = ALL rootLogger.appenderRef.0.ref = ALL_LOG_CONSOLE rootLogger.appenderRef.0.level = ALL rootLogger.appenderRef.1.ref = ALL_LOG_FILE rootLogger.appenderRef.1.level = ALL rootLogger.appenderRef.2.ref = OFF_LOG_FILE rootLogger.appenderRef.2.level = OFF rootLogger.appenderRef.3.ref = FATAL_LOG_FILE rootLogger.appenderRef.3.level = FATAL rootLogger.appenderRef.4.ref = ERROR_LOG_FILE rootLogger.appenderRef.4.level = ERROR rootLogger.appenderRef.5.ref = WARN_LOG_FILE rootLogger.appenderRef.5.level = WARN rootLogger.appenderRef.6.ref = INFO_LOG_FILE rootLogger.appenderRef.6.level = INFO rootLogger.appenderRef.7.ref = DEBUG_LOG_FILE rootLogger.appenderRef.7.level = DEBUG rootLogger.appenderRef.8.ref = TRACE_LOG_FILE rootLogger.appenderRef.8.level = TRACE

Running with this configuration i get all logfiles created in the directory log/.

all.log contains all level messages.

debug.log contains INFO level messages even if no debug calls was made to log.

error.log, fatal.log, off.log and warn.log are empty.

info.log contains only INFO level messages but the format is off a bit.

trace.log contians INFO and TRACE level messages.

Question is why trace.log and debug.log contains INFO messages?

maxpa1n87's user avatar

New contributor

maxpa1n87 is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.

Read Entire Article