我有些不知所措。我正在尝试每次进程运行时创建一个新的日志文件。该过程可以并行运行。如果是这样,我想为每个进程创建一个单独的日志,并将日志写入各自的日志文件。我正在努力解决这个问题,因为要创建的“最后一个”appender是什么,这就是文件写入的地方。我不知道如何解决这个问题。够了,这是log4j.properties文件。
log4j.rootLogger=DEBUG, CONSOLE
log4j.appender.myappender.encoding=UTF-8
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-5p %x %c - %m%n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.Append=false
log4j.appender.LOGFILE.Threshold=DEBUG
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%-5p %x %c - %m%n
和我正在使用的代码
Logger rootLogger = Logger.getRootLogger();
Enumeration appenders = rootLogger.getAllAppenders();
FileAppender fa = null;
while(appenders.hasMoreElements())
{
Appender currAppender = (Appender) appenders.nextElement();
if(currAppender instanceof FileAppender)
{
fa = (FileAppender) currAppender;
}
}
if(fa != null)
{
fa.setFile(logFileName);
fa.activateOptions();
}
else
{
log.info("No File Appender found");
}
*更新
所以我正在做的是运行Quartz。 Quartz有一个可以与不同的params同时调用的工作。我希望每个单独的作业都有自己的日志文件,即使它们都在调用同一个类。
非常感谢任何帮助。 感谢
答案 0 :(得分:1)
我猜测最后一个appender只是被写入,因为你只定义了一个appender。
因此,当您更改appender写入的文件时,您可以有效地更改您唯一的appender的配置。
我要做的是以编程方式创建一个新的appender(而不是使用log4j.xml / .properties)并设置它写入的文件。
http://howtodoinjava.com/2013/04/08/how-to-programmatically-configure-appenders-in-log4j/