【发布时间】:2013-03-04 16:52:21
【问题描述】:
是否可以使用 XML 配置中的规范以编程方式添加 Log4J2 附加程序?
我打算在 log4j2.xml 中定义它,然后像这样根据情况选择附加程序(不会编译):
if (arg[0].equals("log") ) {
Logger.getLogger("loggerNameFromXMLConfig").addAppender("appenderNameFromXMLConfig");
} else {
//...
}
【问题讨论】:
-
这几乎没有重复,因为它是一个 log4j2 问题。链接的问题是指 log4j1(它甚至没有公开与 log4j2 相同的方法)和 slf4j。
-
我不确定关闭此问题的人是否知道它的实际含义。
-
现在,作为一种解决方法,我放弃了 log4j2 并迁移到了允许从 XML 配置动态构建的 Log4J(“Log4J1”)。
-
哦,我忘了我评论过这个。所以基本上 log4j2 背后的大想法是你不能(也不应该)以编程方式设置附加程序。所以你不能按设计来做。
-
阅读 RoutingAppender logging.apache.org/log4j/2.x/manual/… 可能 Log4j2 想要避免声明性和编程配置的混合,不知道为什么,但 RoutingAppender 解决方案似乎更干净。