我正在开发一个以多线程方式处理多个文件的应用程序。分析是通过每个应该分析的文件启动一个线程来完成的,然后执行一系列步骤(在不同的类中),这些步骤都会产生某种形式的日志输出。
我想为我分析的每个文件都有专用的日志文件,这些文件只包含该文件的消息。我现在使用的代码是在程序仍然是单线程时编写的:
PatternLayout layout = new PatternLayout("%d{dd MMM yyyy HH:mm:ss,SSS} [%t] %-5p %C{1} %x - %m%n");
if(Config.CREATE_SEPERATE_LOG)
{
FileAppender appender;
try {
String path = (Config.LOGFILE_PATH!=null)?Config.LOGFILE_PATH:filename;
appender = new FileAppender(layout,path);
appender.setErrorHandler(new FallbackErrorHandler());
appender.setName("Dedicated Appender");
org.apache.log4j.Logger.getRootLogger().addAppender(appender);
} catch (IOException e) {
org.apache.log4j.Logger.getLogger(Config.class).warn("Failed to create a dedicated log "+filename, e);
}
}
这基本上会创建一个额外的附加程序,该附加程序会写入正在分析的文件的专用日志文件。虽然它可以在应用程序是单线程的时候工作,但它会变得一团糟。
如何更改我的设置,以便我可以让每个类参与某个文件的分析,并将其记录到该文件的特定日志文件中。