我可以通过编程方式从log4j2的记录器中删除附加程序吗?
该网站说:“ Log4j 2 API不会公开以任何方式添加,修改或删除附加程序,过滤器或操纵配置的方法”:https : //logging.apache.org/log4j/2.x/manual/configuration.html
但是,如果有人可以提出一种间接的方法来实现这一目标,我将不胜感激。
谢谢。
有一个方法LoggerConfig#removeAppender(String name)将删除特定的 appender 和LoggerConfig#clearAppenders()将删除所有 appender。假设您有一个名称为 的 appender CONSOLE:
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
config.getRootLogger().removeAppender("CONSOLE");
ctx.updateLoggers();
Run Code Online (Sandbox Code Playgroud)
您可以删除 Appender 吗?是的。你应该?几乎总是答案是否定的。如果 LoggerConfig、AsyncAppender 或 RoutingAppender 引用 Appender 怎么办?你会得到一个错误。
在大多数情况下,您确实希望使用更智能的过滤。它们的存在正是为了减少或消除路由到 Appender 的事件数量。
| 归档时间: |
|
| 查看次数: |
4285 次 |
| 最近记录: |