java - 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的原因,然后为什么该对象本身没有作为第二个参数的一部分打印,更有趣的是,它在日志语句中的相应字符串也没有打印。
简而言之,我想了解为什么会在生产环境中发生这种情况以及如何使其工作。
解决方案
您可以在对日志库进行 maven 着色后尝试构建吗,很多时候服务器端库优先于您提到的那些导致版本冲突或代码中出现意外行为等问题,例如您的情况。如果可能,请尝试此选项,在最坏的情况下,如果这不起作用,它将排除其中一种可能性,在这种奇怪的情况下,我发现最好在缩小解决方案之前排除尽可能多的可能情况。
推荐阅读
- php - 通过 ID 获取媒体模型并使用它来制作可下载的 URL 不起作用
- vhdl - 如何减少重复过程(握手)的状态逻辑冗余?
- wcf - 远程计算机中的 WCF netTcpBinding 超出消息大小配额
- sql - 如何为以下查询编写 sql 语句?
- javascript - React Native:如何在 View 中添加变量?
- javascript - 在 localStorage 中存储信息
- sql - 如何在 SQL 中更新名为“值”的字段?我需要减少 15%
- flutter - 使用 Flutter 计算两个日期之间的天数
- nodemon - Nodemon 根据更改的文件名执行不同的脚本
- vba - 如何更改 Word 文档中特定字体的每次出现?