У меня есть следующий файл 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>
Теперь, при возникновении определенного события, я хочу программно изменить уровень корневого логгера с отладки на ошибку . Я не могу использовать подстановку переменных, это обязательно сделать в коде.
Как это можно сделать? Спасибо.
Я предполагаю, что вы используете logback (из файла конфигурации).
Из руководства пользователя logback я вижу
Logger rootLogger = LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
Возможно, это может помочь вам изменить значение?
источник
используя logback 1.1.3 мне пришлось сделать следующее (код Scala):
источник
Я думаю, что вы можете использовать MDC для программного изменения уровня регистрации. Приведенный ниже код является примером изменения уровня ведения журнала в текущем потоке. Этот подход не создает зависимости от реализации обратного входа (API SLF4J содержит MDC).
источник
Как отмечают другие, вы просто создаете,
mockAppender
а затем создаетеLoggingEvent
экземпляр, который, по сути, прослушивает зарегистрированное / происходящее событие регистрацииmockAppender
.Вот как это выглядит в тесте:
источник
Кажется, я делаю успехи
Затем, чтобы получить подробную регистрацию от netty, следующее сделало это
источник