代码之家  ›  专栏  ›  技术社区  ›  asb

带有MDC的Log4j 2.x无法读取PID

  •  0
  • asb  · 技术社区  · 1 年前

    我正在尝试使用 this 获取进程id并将其打印在日志中的解决方案

    RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean();
    String pid = rt.getName();
    ThreadContext.put("PID", pid);
    

    编辑:在我的记录器类中,我可以看到我们正在导入。所以我可以推断,我们肯定是在使用SL4J facade和最有可能的log4j2.x作为依赖树。

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    

    我可以从dubugger中看到,代码正确地获取了进程ID,但简单日志没有显示它,也没有其他错误。我的日志当前如下

    2023-05-22 10:36:54,487 [] DEBUG beanutils.converters.ArrayConverter  - Setting default value: [Ljava.lang.Short;@7a3a49e5
    

    它仍然无法获取PID。这是我的log4j配置中的内容。

    log4j.appender.consoleAppender.layout.ConversionPattern=%d [%X{PID}] %-5p %c{3} %x - %m%n
    

    我的依赖关系树是这样的。可能是Sl4J在干扰?

    λ mvn dependency:tree |grep log4
    [INFO] +- org.apache.logging.log4j:log4j-api:jar:2.17.2:compile
    [INFO] +- org.apache.logging.log4j:log4j-core:jar:2.17.2:compile
    [INFO] +- org.apache.logging.log4j:log4j-api:jar:2.17.2:compile
    [INFO] +- org.apache.logging.log4j:log4j-core:jar:2.17.2:compile
    [INFO] +- org.apache.logging.log4j:log4j-api:jar:2.17.2:compile
    [INFO] +- org.apache.logging.log4j:log4j-core:jar:2.17.2:compile
    [INFO] |  +- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.17.2:provided
    [INFO] |  +- org.apache.logging.log4j:log4j-1.2-api:jar:2.17.2:provided
    [INFO] +- org.apache.logging.log4j:log4j-api:jar:2.17.2:compile
    [INFO] +- org.apache.logging.log4j:log4j-core:jar:2.17.2:compile
    

    关于我可能做错了什么,或者我能做些什么来进一步调试它,有什么想法吗?我尝试使用log4j2.x配置。但它完全停止了日志记录并发出了警告

    log4j:WARN Please initialize the log4j system properly.
    
    0 回复  |  直到 1 年前