chettyharish
chettyharish

Reputation: 1734

Creating multiple logs in log4j causing weird effects

I am trying to create multiple logs in Log4j, but I am facing a weird problem. Here's the log4j.properties and the code implementing it.

# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILEALL

# Define the file appender
log4j.appender.FILEALL=org.apache.log4j.FileAppender
log4j.appender.FILEALL.File=${logfile.name}
# Define the layout for file appender
log4j.appender.FILEALL.layout=org.apache.log4j.HTMLLayout

#log4j.appender.FILEMAIN=org.apache.log4j.FileAppender
#log4j.appender.FILEMAIN.File=${logfilemain.name}
#log4j.appender.FILEMAIN.layout=org.apache.log4j.HTMLLayout

I have added the statement when running both and removed the original one

log4j.rootLogger = DEBUG, FILEALL , FILEMAIN

And this is the java code:

System.setProperty("logfile.name", savePath1);
// System.setProperty("logfilemain.name", savePath1);
logger = Logger.getLogger(HarishLog.class.getName());
PropertyConfigurator.configure("log4j.properties");

The code works perfectly fine till I make one log, but as soon as I enable the setting for 2nd log in either the properties or the javafile, nothing happens.

Besides I am unable to put a different name at

log4j.appender.FILEALL.File=${logfile.name}

it only works for logfile.name and logfilea.name, It doesn't work for any other name if I change it both in the javacode and the properties folder. Why is this???

Thank you

Upvotes: 0

Views: 234

Answers (1)

This works for me:

log4j.rootLogger = DEBUG, FILEALL, FILEMAIN

log4j.appender.FILEALL=org.apache.log4j.FileAppender
log4j.appender.FILEALL.File=${logfile.name}
log4j.appender.FILEALL.layout=org.apache.log4j.HTMLLayout

log4j.appender.FILEMAIN=org.apache.log4j.FileAppender
log4j.appender.FILEMAIN.File=${logfilemain.name}
log4j.appender.FILEMAIN.layout=org.apache.log4j.HTMLLayout

import org.apache.log4j.Logger;

public class LogTest {
    public static void main(final String... args) {
        System.setProperty("logfile.name", "logall.txt");
        System.setProperty("logfilemain.name", "logmain.txt");
        Logger logger = Logger.getLogger(LogTest.class.getName());
        logger.info("hello");
    }
}

If you're still having problems, try adding:

log4j.debug = true

to the beginning of your log4j.properties, and check the output messages.

Upvotes: 1

Related Questions