2012-02-03 4 views
0

У меня есть пружинные пакетная программа, где я реализующий класс skiplistener, как показано ниже:Logging пропускается элементы в другой файл в пакетном задании же весеннего

public class MySkipListener implements SkipListener<SomeBean, SomeBean> { 


public void onSkipInProcess(final SomeBean item, final Throwable t) { 
    // TODO Auto-generated method stub 
    System.out.println("Skipped details during PROCESS is: " + t.getMessage()); 
    LogFactory.getLog("INFO" + MySkipListener.class.getName()).info(
     "Skipped details during PROCESS is: " + t.getMessage());  

} 

public void onSkipInRead(final Throwable t) { 

    System.out.println("Skipped details during READ is: " + t.getMessage()); 
    LogFactory.getLog("INFO" + MySkipListener.class.getName()).info(
     "Skipped details during READ is: " + t.getMessage()); 


} 


public void onSkipInWrite(final SomeBean item, final Throwable t) { 
    // TODO Auto-generated method stub 
    System.out.println("Skipped details during WRITE is: " + t.getMessage()); 
    LogFactory.getLog("INFO" + MySkipListener.class.getName()).info(
     "Skipped details during WRITE is: " + t.getMessage()); 
} 

} 

log4j конфиг:

log4j.rootLogger=myLOG 
log4j.appender.myLOG=org.apache.log4j.RollingFileAppender 
log4j.appender.myLOG.File=myLog.log 
log4j.appender.myLOG.MaxFileSize=100KB 
# Keep one backup file 
log4j.appender.myLOG.MaxBackupIndex=1 
log4j.appender.myLOG.layout=org.apache.log4j.PatternLayout 
log4j.appender.myLOG.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss.SSS} [%t] [%c{1}] %-5p %x - %m%n 

Понятно, что все инструкции протоколирования передаются в myLog.log, включая инструкции из вышеперечисленных методов класса прослушивателя.

Однако я не хочу, чтобы пропущенные записи элементов попадали в основной файл журнала. Я хочу, чтобы они перешли в отдельный файл (например, skippedItems.log), так что мне не нужно искать строку пропущенных элементов в главном журнале, но все пропущенные элементы можно получить непосредственно в отдельном файле.

Какие изменения необходимо сделать для достижения этого?

Ниже приведен пример попытки не работать, где myLOGTwo - это новый appender в моей конфигурации, который не добавляется в rootLogger. Поэтому я хочу добавлять и удалять его в rootLogger динамически каждый раз, когда я хочу писать через этот appender.

Logger l = Logger.getRootLogger(); 
Appender a = l.getAppender("myLOGTwo"); 

l.addAppender(a); 

LogFactory.getLog("INFO" + MySkipListener.class.getName()).info("Testing"); 

l.removeAppender(a); 
+0

почему вы используете добавить/removeAppender? см., например, http://www.jguru.com/faq/view.jsp?EID=1311014 работает с getLogger ("категория") –

ответ

0

Пожалуйста, смотрите комментарий от Майкла в выше вопрос ...