上午使用java处理文件,有2或3个Java组件处理文件。我的要求是文件必须有一个日志文件,它的处理细节会记录在相关的日志文件中。Java Logger with Log4j
问题是单个文件的效果很好,但是多个文件出现问题。 当多个文件都得到处理记录器记录FILE1.TXT日志的日志详细file2.log代替file1.log ...
public Class FileProcessComponent1
{
public void process(String fileName)
{
Logger Log = Logg.getLogger1(fileName,this.getClass());
log.info("file1 logging");
}
}
public Class FileProcessComponent2
{
public void process(String fileName)
{
Logger Log = Logg.getLogger1(fileName,this.getClass());
log.info("file1 logging");
}
}
public Class Logg
{
public static Logger getLogger1(String fileName,Class clazz) throws Exception
{
if(fileName == null || "".equals(fileName.trim()))
throw new Exception("File Name or Map for File Name is Null");
fileName = "/home/logs/"+fileName+".log";
Logger logger = Logger.getLogger(clazz.getCanonicalName()+":"+System.nanoTime());
logger.setAdditivity(false);
FileAppender appender = new DailyRollingFileAppender(new PatternLayout("%d{ISO8601}\t%p\t%c\t%m%n"), fileName, "'.'yyyy-MM-dd");
logger.addAppender(appender);
logger.setLevel(Level.DEBUG);
return logger;
}
}
您的两个组件都将相同的文件名(“file1”)传递给'getLogger1()'。毫不奇怪,他们都写入同一个文件。 –
是两个使用相同的文件名 – sunleo
那么,你的问题是什么?你希望他们写入不同的文件,但你总是传递相同的文件名。很明显,他们都写入相同的文件。传递不同的文件名称,以写入不同的文件。 –