Запись пропущенных элементов в другой файл в одном весеннем пакетном задании - PullRequest
0 голосов
/ 03 февраля 2012

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

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 каждый раз, когда хочу написать через этого аппендера.

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

l.addAppender(a);

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

l.removeAppender(a);

1 Ответ

0 голосов
/ 21 февраля 2012

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

...