使用 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:”(这是我的日志记录语句中的字符串),忘记打印它的param值。
另外,由于foo不为null,这就是打印第一个参数值 false 的原因,然后为什么该对象本身不作为第二个参数的一部分被打印,更有趣的是,它在日志记录语句中也对应于它的字符串未打印。
简而言之,我想了解为什么在生产环境中会发生这种情况,以及如何使它起作用。
答案 0 :(得分:0)
您是否可以在对日志库进行maven着色后尝试构建,很多时候服务器端库优先于您提到的库,从而导致诸如版本冲突或代码意外行为等问题。 如果可能的话,请尝试使用此选项,在最坏的情况下,如果此方法不起作用,则将排除其中一种可能性,在这种奇怪的情况下,我认为最好在排除解决方案之前先排除尽可能多的情况。
答案 1 :(得分:0)
您可以在您的课程上运行以下命令,然后发布产品的输出吗?
javap -verbose <YourClassName>.class
通过输出,我们应该能够看到类的组装方式。
PS: 根据您的部署方式,您可能需要解压缩jar文件,然后在提取的类上运行上述命令。