Mam następujący plik logback.xml:
<configuration debug="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Teraz, po wystąpieniu określonego zdarzenia, chcę programowo zmienić poziom głównego programu rejestrującego z debugowania na błąd . Nie mogę używać podstawiania zmiennych, jest to obowiązkowe, aby zrobić to w kodzie.
Jak można to zrobić ? Dzięki.
Zakładam, że używasz logback (z pliku konfiguracyjnego).
Z instrukcji wylogowywania , widzę
Logger rootLogger = LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
Może to pomoże Ci zmienić wartość?
źródło
używając logback 1.1.3 musiałem wykonać następujące czynności (kod Scala):
źródło
Myślę, że można użyć MDC do programowej zmiany poziomu rejestrowania. Poniższy kod jest przykładem zmiany poziomu rejestrowania w bieżącym wątku. Takie podejście nie powoduje zależności od implementacji logback (interfejs API SLF4J zawiera MDC).
źródło
Jak zauważyli inni, po prostu tworzysz,
mockAppender
a następnie tworzyszLoggingEvent
instancję, która zasadniczo nasłuchuje zarejestrowanego / zachodzącego w niej zdarzenia logowaniamockAppender
.Oto jak to wygląda w teście:
źródło
Wydaje się, że odnoszę sukcesy
Następnie, aby uzyskać szczegółowe logowanie z netty, wykonano następujące czynności
źródło