【发布时间】:2015-09-29 05:36:01
【问题描述】:
我有一个简单的 Spring Boot JAR 应用程序,它使用自定义日志库。 ( log4j2 之上的扩展)。 log4j2.xml 元素配置具有“包”的名称,可以在其中找到附加程序。
这个自定义日志库可以很好地与其他 .war、.jar 文件和除 spring boot 之外的其他独立 java 实现配合使用。
正如 Spring Boot 文档所说,我已将 log4j2.xml 添加到其类路径中,当我在 Eclipse IDE 上运行它时,它按预期工作。
但是,当我尝试使用 uber jar 构建 jar 时,它会找到 log4j2.xml 但无法找到自定义日志库,即使 jar 位于最终打包的 jar 的 lib 文件夹中。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.2.4.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
我检查了 uber jar 和 eclipse ide 之间发生的类加载顺序,区别很明显 uber jar 只是加载核心 log4j 库,甚至在加载自定义 appender 之前就开始读取 XML。所以classnotfound异常并且没有日志记录。
当 eclipse 加载 lib 文件夹中的所有内容时。
我将附加程序代码从日志记录 jar 移动到我的 Spring Boot 项目中,它可以工作。将 appender 捆绑到一个 jar 中并通过 POM 引用它是行不通的。
我们还使用了 JarLauncher 配置,理想情况下应该从 lib 文件夹中加载所有内容。
这是我遇到相同问题的最接近的链接,
http://www.widecodes.com/CJVVWXXgkq/how-to-create-custom-appender-for-log4j2-in-spring.html
但看起来开发人员在他的工作区中使用了 appender 而不是 jar。 :-(。这对我有用。
我是 springboot 的新手,如何使日志记录工作? 提前致谢。
【问题讨论】:
标签: logging spring-boot log4j2 classnotfound