В качестве справочного материала при попытке изменить код, ответственный за создание регистраторов, существует множество правил, которые должны выполняться для работы регистратора.
Теперь у меня есть опыт работы с программной конфигурацией SLF4J/Logback.
Задача
Программа должна открыть отдельный файл журнала для каждого обрабатываемого входного файла.
решение для задачи
Вместо настройки Logback с помощью XML, то нужно «вручную» инстанцирует кодеры, appenders и регистраторы, а затем настроить и связать их вместе.
Caveat 1
Logback сходит с ума при попытке разделить кодер (т.е. PatternLayoutEncoder) между appenders.
Раствор для предостережением 1
Создать отдельный кодер для каждого Appender.
Caveat 2
Logback отказывается что-нибудь войти, если кодеры и appenders не связаны с контекстом регистрации.
Раствор для предостережения 2
Вызова SetContext на каждый кодер и Appender, передавая LoggerFactory в качестве параметра.
Caveat 3
Logback отказывается что-нибудь войти, если кодеры и appenders не запускаются.
Раствора для предостережения 3
кодеров и appenders должен быть запущен в правильном порядке, то есть первые кодеры, то appenders.
Caveat 4
RollingPolicy объекты (т.е. TimeBasedRollingPolicy) производят странное сообщение об ошибке, как «формат даты не распознан», когда они не прикреплены к одной и той же контексте, как Appender.
Раствор для предостережения 4
вызова SetContext на RollingPolicy точно так же, как и на кодеры и appenders.
Здесь работает пример «ручной» конфигурация Logback:
@Andrew Swan: Не могли бы вы отметить в комментарии, что вы хотели бы изменить с текущей версией. Я попытаюсь обновить его соответствующим образом. – reto
@reto Мое изменение в основном (1) добавляет объявление класса так, что оно компилируется как-is и (2) добавляет отсутствующий «g» в «Loger». –
Спасибо за ввод. Я обновил эти вещи. – reto