I want my log files show only their log level information.I mean info.log should show only info logs not error or warn or debug logs. I could do that by instantiating object for each log level.I mean I have _traceLogger, _infoLogger, _warnLogger etc. for all levels.And it is not what I want. Here is my log4j.properties file.
log4j.rootLogger=TRACE,TraceFileAppender,DebugFileAppender,InfoFileAppender,WarnFileAppender,ErrorFileAppender,FatalFileAppender
# TraceFileAppender - used to log messages in the trace.log file.
log4j.appender.TraceFileAppender=org.apache.log4j.FileAppender
log4j.appender.TraceFileAppender.File=./logs/trace.log
log4j.appender.TraceFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.TraceFileAppender.layout.ConversionPattern=[%-5p]%d{yyyy-MM-dd HH:mm:ss} - %m%n
# DebugFileAppender - used to log messages in the debug.log file.
log4j.appender.DebugFileAppender=org.apache.log4j.FileAppender
log4j.appender.DebugFileAppender.File=./logs/debug.log
log4j.appender.DebugFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.DebugFileAppender.layout.ConversionPattern=[%-5p]%d{yyyy-MM-dd HH:mm:ss} - %m%n
# InfoFileAppender - used to log messages in the info.log file.
log4j.appender.InfoFileAppender=org.apache.log4j.FileAppender
log4j.appender.InfoFileAppender.File=./logs/info.log
log4j.appender.InfoFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.InfoFileAppender.layout.ConversionPattern=[%-5p]%d{yyyy-MM-dd HH:mm:ss} - %m%n
# WarnFileAppender - used to log messages in the warn.log file.
log4j.appender.WarnFileAppender=org.apache.log4j.FileAppender
log4j.appender.WarnFileAppender.File=./logs/warn.log
log4j.appender.WarnFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.WarnFileAppender.layout.ConversionPattern=[%-5p]%d{yyyy-MM-dd HH:mm:ss} - %m%n
# ErrorFileAppender - used to log messages in the error.log file.
log4j.appender.ErrorFileAppender=org.apache.log4j.FileAppender
log4j.appender.ErrorFileAppender.File=./logs/error.log
log4j.appender.ErrorFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.ErrorFileAppender.layout.ConversionPattern=[%-5p]%d{yyyy-MM-dd HH:mm:ss} - %m%n
# FatalFileAppender - used to log messages in the fatal.log file.
log4j.appender.FatalFileAppender=org.apache.log4j.FileAppender
log4j.appender.FatalFileAppender.File=./logs/fatal.log
log4j.appender.FatalFileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.FatalFileAppender.layout.ConversionPattern=[%-5p]%d{yyyy-MM-dd HH:mm:ss} - %m%n
log4j.logger.trace=TRACE,TraceFileAppender
log4j.logger.debug=DEBUG,DebugFileAppender
log4j.logger.info=INFO,InfoFileAppender
log4j.logger.warn=WARN,WarnFileAppender
log4j.logger.error=ERROR,ErrorFileAppender
log4j.logger.fatal=FATAL,FatalFileAppender
Is there any way to do that with instantiating only one logger object for all?
Here is java code:
PropertyConfigurator.configure("log4j.properties");
_traceLogger = org.apache.log4j.Logger.getLogger("trace");
_debugLogger = org.apache.log4j.Logger.getLogger("debug");
_infoLogger = org.apache.log4j.Logger.getLogger("info");
_warnLogger = org.apache.log4j.Logger.getLogger("warn");
_errorLogger = org.apache.log4j.Logger.getLogger("error");
_fatalLogger = org.apache.log4j.Logger.getLogger("fatal");
With this code, it works as expected.But I need one logger object.
*Edit
I think, I need something like upper-boundary. I mean there is threshold and every appender needs upper-boundary too. Correct me if I am wrong.
As pointed out in comments.This question already has an answer here:
can we have level based log files using log4j
log different log levels to different files with log4j