2013-09-28 3 views
1

File logger Am обрабатывает файлы с помощью java, для обработки файлов есть 2 или 3 компонента Java. Мое требование состоит в том, чтобы файл должен иметь файл журнала, а его данные обработки будут регистрироваться в соответствующем файле журнала.Java Logger with Log4j

Проблема заключается в том, что один файл работает хорошо, но с несколькими файлами am возникают проблемы. Когда несколько файлов становятся обработаны регистратор регистрирует деталь журнала журналов 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; 
     } 
} 
+0

Ваши два компонента передают одно и то же имя файла («file1») в 'getLogger1()'. Не удивительно, что они оба пишут в тот же файл. –

+0

да оба используют одно и то же имя файла – sunleo

+0

Итак, каков ваш вопрос? Вы хотите, чтобы они писали разные файлы, но вы всегда передаете одно и то же имя файла. Поэтому, очевидно, все они пишут в один и тот же файл. Передайте другое имя файла, чтобы записать в другой файл. –

ответ

1

Я думаю, что вы хотите создать регистратор, указывающий на файл для уникального мировоззрения каждый файл поставляется для обработки.

Попробуйте это,

а) В момент, когда вы начинаете обрабатывать новый файл, создать новый Logger с именем файла, Loggername. b) Создайте Appender с именем filename.log и назначьте приложение для регистратора.

Теперь, когда вы пытаетесь получить регистратор, всегда используйте имя файла в getLogger().

Как только вы закончите обработку файла, удалите регистратор/приложение. (это очень важно)

+0

Спасибо за помощь. Могли бы дать мне способ удалить регистратор/приложение. – sunleo

+0

удалите все приложения из регистратора и закройте приложение. –

Смежные вопросы