我正在尝试在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.name
和logfilea.name
,如果我在javacode和properties文件夹中都更改它,则它不适用于任何其他名称。这是为什么???
谢谢
答案 0 :(得分: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的开头,并检查输出消息。