我正在尝试使用
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.