У меня есть пружинные пакетная программа, где я реализующий класс 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);
почему вы используете добавить/removeAppender? см., например, http://www.jguru.com/faq/view.jsp?EID=1311014 работает с getLogger ("категория") –