У меня есть подпружиненная программа, в которой я реализую класс 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);