Podczas próby modyfikacji kodu odpowiedzialnego za tworzenie rejestratorów, istnieje kilka reguł, które muszą być spełnione, aby rejestrator działał.
Teraz mam doświadczenie z konfiguracją programową SLF4J/logback.
Zadanie
program musi otworzyć oddzielny plik dziennika dla każdego pliku wejściowego przetwarzane.
rozwiązanie dla zadania
Zamiast konfigurowania logback poprzez XML, jeden musi „ręcznie” instancję koderów appenders i rejestratory, a następnie skonfigurować i połączyć je ze sobą.
Zastrzeżenie 1
Logback szaleje na próbę podzielenia koder (tj PatternLayoutEncoder) pomiędzy appenders.
rozwiązanie dla zastrzeżeniem 1
Tworzenie osobnego kodera dla każdego appender.
Zastrzeżenie 2
Logback odmawia niczego zalogować, jeśli koderów i appenders nie są związane z kontekstem logowania.
rozwiązanie dla zastrzeżeniem 2
połączeń setContext na każdej kodera i appender, przechodząc LoggerFactory jako parametr.
Zastrzeżenie 3
Logback odmawia niczego zalogować, jeśli koderów i appenders nie są uruchamiane.
Roztwór do zastrzeżeniem 3
koderów i appenders muszą być uruchomione we właściwej kolejności, to znaczy pierwsze koderów następnie appenders.
Zastrzeżenie 4
obiekty RollingPolicy (tj TimeBasedRollingPolicy) wytwarzają dziwne komunikaty o błędach, takich jak „format daty nie uznane”, gdy nie są one przyłączone do tego samego kontekstu jako appender.
rozwiązanie dla zastrzeżeniem 4
wezwanie setContext na RollingPolicy sam sposób, jak na koderów i appenders.
Oto przykład „Manual” konfiguracji logback pracy:
@Andrew Swan: Mógłbyś zaznaczyć w komentarzu, co chciałbyś zmienić w aktualnej wersji. Spróbuję go odpowiednio zaktualizować. – reto
@reto Moja zmiana głównie (1) dodaje deklarację klasy tak, że kompiluje się tak jak jest i (2) dodaje brakującą "g" do "Logera". –
Dzięki za wejście. Zaktualizowałem te rzeczy. – reto