带有Log4j的Java Logger

时间:2013-09-28 07:53:28

标签: java logging log4j

File logger使用java处理文件时,有2或3个Java组件来处理文件。我的要求是文件必须有一个日志文件,其处理细节将记录在相关的日志文件中。

问题是单个文件运行良好,但多个文件出现问题。 当处理多个文件时,logger将log1.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; 
      }
}

1 个答案:

答案 0 :(得分:1)

我认为你想创建一个指向unqiue文件的记录器,以便处理每个文件。

试试这个,

a)在您开始处理新文件时,创建一个文件名为Loggername的新Logger。 b)使用filename.log创建Appender并将appender分配给记录器。

现在,当您尝试获取记录器时,请始终使用getLogger()中的文件名。

完成处理文件后,删除logger / appender。 (这非常重要)