java - Java 日志语句的奇怪行为

标签 java linux logging log4j slf4j

使用 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 的原因,然后是为什么该对象本身不作为第二个参数的一部分打印的原因,更有趣的是,它在日志语句中的相应字符串也是如此未打印。

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

最佳答案

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

关于java - Java 日志语句的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55486609/

相关文章:

python - python脚本失败时记录

python - 将编码参数添加到 logging.basicConfig

java - Swing 中的窗口最小化

java异常: converting date and/or time from character string

java - java DOM XML 解析的不同结果

java - 如何在 Netbeans 的 Jar 中嵌入 Javadoc

html - 从 shell 中杀死 HTML 节点

php - Laravel View 在 Linux 服务器上不工作

linux - Windows <sys/file.h> 等效项

c# - 日志级别 : Would you consider DEBUG finer than TRACE?