简体   繁体   中英

Different Loggers with Different configurations Log4j

import org.apache.log4j.*;

public class LoggingInJava {

    public static void main(String[] args) {
        PropertyConfigurator.configure("mylog4j1.properties");
        myLogger.info("1");
        PropertyConfigurator.configure("mylog4j2.properties");
        myLogger2.info("2");

        myLogger.info("3");
    }
}

I am beginner in logging.

I have two different properties files - mylog4j1.properties has fileappender which outputs to file1 and mylog4j2.properties has fileAppender which outputs to file2 .

I want myLogger1 to work with mylog4j1 configurations and similar for next .

But if I write my code as above , I am not getting expected result .

Expected Result:

file1: 1 3
file2: 2

Actual Result:

file1: 1 file2: 2 3

I did try learning from other questions from stackoverflow but even then I couldnt figure it out .

Please help me find my mistake or whether I am making conceptual error in Log4j framework.

the below code is working fine and it is taking log4j from two different properties files "mylog4j1.properties" and "mylog4j2.properties" and the output is generated to two output files "file1.log" and "file2.log" with the desired output.

    import org.apache.log4j.*;

    public class LoggingInJava {

        static final Logger myLogger1 = Logger.getLogger("mylog4j1");
        static final Logger myLogger2 = Logger.getLogger("mylog4j2");

        public static void main(String[] args) {
            PropertyConfigurator.configure("mylog4j1.properties");
            myLogger1.info("1");
            PropertyConfigurator.configure("mylog4j2.properties");
            myLogger2.info("2");

            myLogger1.info("3");
        }
    }

mylog4j1.properties
--------------------
log4j.rootLogger=OFF

log4j.appender.myLogger1=org.apache.log4j.FileAppender
log4j.appender.myLogger1.File=logs/file1.log
log4j.appender.myLogger1.layout=org.apache.log4j.PatternLayout
log4j.appender.myLogger1.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n

log4j.category.mylog4j1=TRACE, myLogger1
log4j.additivity.mylog4j1=false


mylog4j2.properties
--------------------
log4j.rootLogger=OFF

log4j.appender.myLogger2=org.apache.log4j.FileAppender
log4j.appender.myLogger2.File=logs/file2.log
log4j.appender.myLogger2.layout=org.apache.log4j.PatternLayout
log4j.appender.myLogger2.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n

log4j.category.mylog4j2=TRACE, myLogger2
log4j.additivity.mylog4j2=false

Why you use two properties files? You can do this from 1 properties file.

Here is the sample for, how implement that

# Direct log messages to a log file
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=/home/logs/firstLog.log
log4j.appender.FILE.MaxFileSize=1MB
log4j.appender.FILE.MaxBackupIndex=1
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.Append=true
log4j.appender.FILE.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n

log4j.appender.SECOND=org.apache.log4j.RollingFileAppender
log4j.appender.SECOND.File=/home/logs/secondLog.log
log4j.appender.SECOND.MaxFileSize=1MB
log4j.appender.SECOND.MaxBackupIndex=1
log4j.appender.SECOND.layout=org.apache.log4j.PatternLayout
log4j.appender.SECOND.Append=true
log4j.appender.SECOND.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n

# Root logger option
log4j.rootLogger=TRACE, FILE

log4j.category.testngLogger=DEBUG, SECOND
log4j.additivity.testngLogger=false

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM