gre*_*rep 1 java logging log4j log4j2
我使用log4j 2.9
我在 log4j2.xml 中配置了文件附加程序。
例如 :
all_log_appender, device_appender, sql_appender
Run Code Online (Sandbox Code Playgroud)
所有附加程序都登录不同的文件。
在运行时选择我的附加程序以便决定在哪里(在哪个文件中)记录的正确方法是什么?
老实说,我在文档中找不到示例。我还尝试扩展 Logger 类,但据我了解, 扩展 log4j2 记录器类是不正确的,因为“某些布局要求 Log4j 遍历堆栈跟踪以报告记录器代码中的哪个类和行被调用”
我找不到任何如何在运行时选择附加程序的示例。
你能给我一个简单的例子吗?
这可以通过使用Log4j2 内置的 Routing Appender在配置中完成(无需自定义代码) 。
该附加程序可以将日志事件路由到一组预定义的附加程序,也可以根据需要动态添加新的附加程序。这个 stackoverflow 答案有示例和其他示例的链接。
手册页有三个示例,但常见问题解答页面(“如何动态写入单独的日志文件?”)有一个示例,该示例使用映射ThreadContext来控制后续事件(在当前线程中)记录到哪个日志文件。(另请参阅StackOverflow 上的此示例。)
除了 ThreadContext 之外,还可以(请参阅 LOG4J2-1015)基于日志事件标记进行路由,因此应用程序可以基于每个事件指定事件路由到哪个文件附加程序。请参阅此 StackOverflow 答案,了解基于标记进行路由的示例。
| 归档时间: |
|
| 查看次数: |
2275 次 |
| 最近记录: |