首页 > 解决方案 > Java 日志记录语句的奇怪行为

问题描述

log4j 与 Sl4j 一起使用并遇到一个奇怪的问题,我有以下日志语句。

log.trace("Foo Request object value : {} foo params: {}" , foo==null, foo);

如果 foo 有一个 bar 值,它会在我的本地日志中打印在下面。

Foo Request object value : false foo params: bar 

但是当我将代码部署到生产环境时,它会打印在下面:

Foo Request object value : false

注意上面它甚至不打印我的日志语句中的字符串“foo params:”,忘记打印它的参数值

同样由于 foo 不为空,这就是打印第一个参数值false的原因,然后为什么该对象本身没有作为第二个参数的一部分打印,更有趣的是,它在日志语句中的相应字符串也没有打印。

简而言之,我想了解为什么会在生产环境中发生这种情况以及如何使其工作。

标签: javalinuxlogginglog4jslf4j

解决方案


您可以在对日志库进行 maven 着色后尝试构建吗,很多时候服务器端库优先于您提到的那些导致版本冲突或代码中出现意外行为等问题,例如您的情况。如果可能,请尝试此选项,在最坏的情况下,如果这不起作用,它将排除其中一种可能性,在这种奇怪的情况下,我发现最好在缩小解决方案之前排除尽可能多的可能情况。


推荐阅读