【问题标题】:Let every class of one group have it's own Log4j2 logging environment让一个组的每个班级都有自己的Log4j2日志环境
【发布时间】:2015-07-16 21:57:32
【问题描述】:

我的程序,在它的主要功能背后,包含独立运行且大部分时间处于空闲状态的恶魔后台线程。如果出现问题,线程会静默失败(它们会显示 GUI 警告,终止,但程序继续)。由于这些线程在与主应用程序不同的上下文中运行,因此如果每个线程都可以拥有自己的日志文件,那就太好了。所有线程都在运行一个 runnable,它是我的 Robot 类的某个实例。

Robot 类定义了setLoggergetLogger 方法并使用给定的记录器来记录数据。但只要整个项目的记录器配置相同,我就无法为恶魔线程分离日志。

有没有简单的方法来做到这一点?来自线程的日志消息与主程序日志混合是无用的。

【问题讨论】:

    标签: java multithreading logging log4j2


    【解决方案1】:

    RoutingAppender 可以做你想做的事。其工作方式是,每个线程在 Log4j2 ThreadContextMap 中设置一个唯一值,RoutingAppender 将使用该值路由到单独的日志文件。 Log4j2 FAQ 页面包含一个detailed example

    【讨论】:

    • 你好。谢谢 我认为是这样的。但我还是有点迷路。我可以在<Route key="special"> 中加入通配符,例如<Route key="Robot_[a-zA-Z\.\_]+">?如何在项目的Java部分选择路由文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2018-07-24
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多