2017-01-13 93 views
2

有沒有什麼辦法可以通過編程從log4j2的logger中刪除appender?如何以編程方式從log4j2中的logger中刪除appender?

的網站上說,「Log4j的2 API不公開方法來添加,修改或刪除追加程序和過濾器或操縱以任何方式配置」: https://logging.apache.org/log4j/2.x/manual/configuration.html

,但我會很感激,如果有人能提出一個間接實現這一目標的方法。

謝謝。

+0

你能否提供一個示例配置文件,你從中得到了什麼? – sazzad

回答

-1

你能移除一個Appender嗎?是。你應該?幾乎總是答案是否定的。如果LoggerConfig,AsyncAppender或RoutingAppender引用Appender會怎麼樣?你會得到一個錯誤。

在大多數情況下,您確實想使用更智能的過濾。他們在那裏正是爲了減少或消除發送給Appender的事件數量。

0

有一種方法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(); 
相關問題