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:
- log.log - include all logs
- foo.log - include logs defined by
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.