Задача была поставлена так. Выводить в один лог файл, только логи уровня INFO. В другой же, только логи уровня DEBUG. Долгое время не мог сообразить, как же это сделать😳. В итоге, помогло наложение фильтра, на лог который пишет DEBUG логи. Выглядит это так:
Он просто отсекает логи INFO уровня. Ничего сложного. Привожу пример полной конфигурационного файла log4j.properties:
log4j.appender.DEBUGAppender.filter.a=org.apache.log4j.varia.LevelMatchFilter log4j.appender.DEBUGAppender.filter.a.LevelToMatch=INFO log4j.appender.DEBUGAppender.filter.a.AcceptOnMatch=FALSE
# Root logger option log4j.rootLogger= ALL, INFOAppender, DEBUGAppender # Redirect log messages to a log file, support file rolling. log4j.appender.DEBUGAppender=org.apache.log4j.RollingFileAppender log4j.appender.DEBUGAppender.Threshold=DEBUG log4j.appender.DEBUGAppender.file.append=true log4j.appender.DEBUGAppender.File=logs/process.log log4j.appender.DEBUGAppender.layout=org.apache.log4j.PatternLayout log4j.appender.DEBUGAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} - %m%n log4j.appender.DEBUGAppender.filter.a=org.apache.log4j.varia.LevelMatchFilter log4j.appender.DEBUGAppender.filter.a.LevelToMatch=INFO log4j.appender.DEBUGAppender.filter.a.AcceptOnMatch=FALSE log4j.appender.INFOAppender=org.apache.log4j.RollingFileAppender log4j.appender.INFOAppender.Threshold=INFO log4j.appender.INFOAppender.file.append=true log4j.appender.INFOAppender.File=logs/result.log log4j.appender.INFOAppender.layout=org.apache.log4j.PatternLayout log4j.appender.INFOAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} - %m%n