在 logback 中打印日志来自的归档文件 (jar)
Print archive (jar) the log is coming from in logback
我在 Tomcat 服务器和 Websphere 服务器上的 class 实现之间存在一些差异。在 logback 中有没有办法在每个日志中显示下一个 jar 和版本?所以日志看起来像这样:
DEBUG | 2015-01-22 16:13:49.252 [Default Executor-thread-7] ApplicationName org.apache.jcp.xml.dsig.internal.dom.DOMSignedInfo - Canonicalized SignedInfo: [wss4j.jar 1.6.17]
我现在的模式是这样的:
<pattern>%-5level | %date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %contextName %logger - %message%n</pattern>
我的 POM:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>0.9.30</version>
<type>jar</type>
<scope>runtime</scope>
</dependency>
我建议检查 Java 进程的完整类路径,您可以简单地使用
jinfo [pid]
您将获得大量输出,包括 java.class.path
所有罐子以及它们的顺序
对于大型应用程序服务器(WebSphere 等)来说,这是一个相当普遍的问题,这些应用程序服务器有一些其他版本的库首先出现在类路径中,这可能是您意想不到的
使用堆栈跟踪很容易做到这一点。
使用 Logback 显示每行堆栈跟踪的 jar 文件和版本:
您只需添加 packagingData="true"
作为配置标签的属性。
示例:
<configuration packagingData="true">
...
</configuration>
然后你会得到类似的东西:
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)
~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE]
查看那里的文档:Enabling packaging data in stack traces。
注意 : 从1.1.4版本开始,默认情况下禁用打包数据。
James Strachan 的文章 (2008)
引用自 logback documentation here。
图案布局
否则你也可以 customize 你的 pattern
与 :
- %class
- %文件
- %行
- %来电者
我在 Tomcat 服务器和 Websphere 服务器上的 class 实现之间存在一些差异。在 logback 中有没有办法在每个日志中显示下一个 jar 和版本?所以日志看起来像这样:
DEBUG | 2015-01-22 16:13:49.252 [Default Executor-thread-7] ApplicationName org.apache.jcp.xml.dsig.internal.dom.DOMSignedInfo - Canonicalized SignedInfo: [wss4j.jar 1.6.17]
我现在的模式是这样的:
<pattern>%-5level | %date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %contextName %logger - %message%n</pattern>
我的 POM:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>0.9.30</version>
<type>jar</type>
<scope>runtime</scope>
</dependency>
我建议检查 Java 进程的完整类路径,您可以简单地使用
jinfo [pid]
您将获得大量输出,包括 java.class.path
所有罐子以及它们的顺序
对于大型应用程序服务器(WebSphere 等)来说,这是一个相当普遍的问题,这些应用程序服务器有一些其他版本的库首先出现在类路径中,这可能是您意想不到的
使用堆栈跟踪很容易做到这一点。
使用 Logback 显示每行堆栈跟踪的 jar 文件和版本:
您只需添加 packagingData="true"
作为配置标签的属性。
示例:
<configuration packagingData="true">
...
</configuration>
然后你会得到类似的东西:
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE]
查看那里的文档:Enabling packaging data in stack traces。
注意 : 从1.1.4版本开始,默认情况下禁用打包数据。
James Strachan 的文章 (2008)
引用自 logback documentation here。
图案布局
否则你也可以 customize 你的 pattern
与 :
- %class
- %文件
- %行
- %来电者