Java Log4j以编程方式为并行运行创建新文件
我有点不知所措。每次进程运行时,我都试图创建一个新的日志文件。这个过程可以并行运行。当它这样做时,我想为每个进程创建一个单独的日志,并将日志写入各自的日志文件。我正在努力解决这个问题,因为无论创建的“最后一个”appender是什么,都是文件写入的地方。我不知道如何解决这个问题。说够了,这里是log4j.properties文件Java Log4j以编程方式为并行运行创建新文件,java,log4j,Java,Log4j,我有点不知所措。每次进程运行时,我都试图创建一个新的日志文件。这个过程可以并行运行。当它这样做时,我想为每个进程创建一个单独的日志,并将日志写入各自的日志文件。我正在努力解决这个问题,因为无论创建的“最后一个”appender是什么,都是文件写入的地方。我不知道如何解决这个问题。说够了,这里是log4j.properties文件 log4j.rootLogger=DEBUG, CONSOLE log4j.appender.myappender.encoding=UTF-8 log4j.appe
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有一个作业,可以与不同的参数同时调用。我希望每个单独的作业运行都有自己的日志文件,即使它们都调用同一个类
非常感谢您的帮助。
谢谢我猜最后一个appender只会被写入,因为您只定义了一个appender 因此,当您更改appender写入的文件时,实际上是在更改唯一appender的配置 我要做的是以编程方式创建一个新的appender(而不是使用log4j.xml/.properties)并设置它写入的文件