Reputation: 1912
I want to use a default logger as well as a specific logger that will log only the ones defined by me. I got the following by referring to another SO question.
Eg:
foo.info(..)
I have set the following properties
log4j.rootLogger = INFO, FOO, file
log4j.logger.FOO=DEBUG, FOO
log4j.logger.file=DEBUG, file
log4j.additivity.FOO=false
log4j.additivity.file=false
log4j.appender.FOO = org.apache.log4j.RollingFileAppender
log4j.appender.FOO.layout = org.apache.log4j.PatternLayout
log4j.appender.FOO.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.FOO.File = foo.log
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=log.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
And my code includes the following:
private static final Logger foo = Logger.getLogger("FOO");
private static final Logger log = Logger.getLogger(App.class); //NOTE I can't change this
public static void main(String[] args) {
log.info("info");
foo.info("fooo");
}
But this gives the opposite of what I want
log.log
has only "info" while foo.log
has both.
Note that I cannot change the default log
instantiating code segment.
Upvotes: 4
Views: 2481
Reputation: 7948
Change your properties file like below. fileAppender
will be added to both FOO logger and root logger to log all messages. FOOAppender
will only be added to FOO logger to only log it's messages. Giving loggers and appenders different names, helps understanding log property files.
log4j.rootLogger = INFO,fileAppender
log4j.logger.FOO=DEBUG,FOOAppender,fileAppender
log4j.additivity.FOO=false
log4j.appender.FOOAppender = org.apache.log4j.RollingFileAppender
log4j.appender.FOOAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.FOOAppender.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.FOOAppender.File = foo.log
log4j.appender.fileAppender=org.apache.log4j.FileAppender
log4j.appender.fileAppender.File=log.log
log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.fileAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
Upvotes: 2