Saya memiliki file logback.xml berikut:
<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>
Sekarang, setelah terjadinya peristiwa tertentu, saya ingin secara programatik mengubah tingkat logger root dari debug ke kesalahan . Saya tidak bisa menggunakan substitusi variabel, saya wajib melakukan ini dalam kode.
Bagaimana itu bisa dilakukan? Terima kasih.
Saya berasumsi Anda menggunakan logback (dari file konfigurasi).
Dari manual logback , saya mengerti
Logger rootLogger = LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
Mungkin ini dapat membantu Anda mengubah nilainya?
sumber
menggunakan logback 1.1.3 Saya harus melakukan hal berikut (kode Scala):
sumber
Saya pikir Anda dapat menggunakan MDC untuk mengubah level logging secara terprogram. Kode di bawah ini adalah contoh untuk mengubah level logging pada utas saat ini. Pendekatan ini tidak menciptakan ketergantungan pada implementasi logback (API SLF4J berisi MDC).
sumber
Seperti yang ditunjukkan oleh orang lain, Anda cukup membuat
mockAppender
dan kemudian membuatLoggingEvent
contoh yang pada dasarnya mendengarkan acara logging yang terdaftar / terjadi di dalammockAppender
.Berikut ini tampilannya dalam tes:
sumber
Sepertinya saya mengalami kesuksesan
Kemudian untuk mendapatkan detail logging dari netty, berikut ini telah dilakukan
sumber