Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding multiple log files

Tags:

java

log4j

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.

like image 225
S.Dan Avatar asked Oct 19 '25 15:10

S.Dan


1 Answers

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
like image 70
miskender Avatar answered Oct 22 '25 05:10

miskender



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!