S.Dan
S.Dan

Reputation: 1912

Adding multiple log files

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:

  1. log.log - include all logs
  2. 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.

Upvotes: 4

Views: 2481

Answers (1)

miskender
miskender

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

Related Questions