0

我正在尝试在 Log4j 中创建多个日志,但我遇到了一个奇怪的问题。这是 log4j.properties 和实现它的代码。

# 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

我在运行两者时添加了语句并删除了原始语句

log4j.rootLogger = DEBUG, FILEALL , FILEMAIN

这是java代码:

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

在我创建一个日志之前,代码工作得非常好,但是一旦我在属性或 javafile 中启用了第二个日志的设置,就什么也没有发生。

此外,我无法在

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

它仅适用于logfile.nameand logfilea.name,如果我在 javacode 和属性文件夹中都更改它,它不适用于任何其他名称。为什么是这样???

谢谢

4

1 回答 1

1

这对我有用:

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");
    }
}

如果您仍然遇到问题,请尝试添加:

log4j.debug = true

到 log4j.properties 的开头,并检查输出消息。

于 2013-02-24T14:43:44.353 回答