有沒有什麼辦法可以通過編程從log4j2的logger中刪除appender?如何以編程方式從log4j2中的logger中刪除appender?
的網站上說,「Log4j的2 API不公開方法來添加,修改或刪除追加程序和過濾器或操縱以任何方式配置」: https://logging.apache.org/log4j/2.x/manual/configuration.html
,但我會很感激,如果有人能提出一個間接實現這一目標的方法。
謝謝。
有沒有什麼辦法可以通過編程從log4j2的logger中刪除appender?如何以編程方式從log4j2中的logger中刪除appender?
的網站上說,「Log4j的2 API不公開方法來添加,修改或刪除追加程序和過濾器或操縱以任何方式配置」: https://logging.apache.org/log4j/2.x/manual/configuration.html
,但我會很感激,如果有人能提出一個間接實現這一目標的方法。
謝謝。
你能移除一個Appender嗎?是。你應該?幾乎總是答案是否定的。如果LoggerConfig,AsyncAppender或RoutingAppender引用Appender會怎麼樣?你會得到一個錯誤。
在大多數情況下,您確實想使用更智能的過濾。他們在那裏正是爲了減少或消除發送給Appender的事件數量。
有一種方法LoggerConfig#removeAppender(String name)它將刪除特定的appender和LoggerConfig#clearAppenders()這將刪除所有的appender。假設你有一個名字爲CONSOLE
的appender:
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
config.getRootLogger().removeAppender("CONSOLE");
ctx.updateLoggers();
你能否提供一個示例配置文件,你從中得到了什麼? – sazzad