首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将公用日志连接到slf4j-api

将公用日志连接到slf4j-api
EN

Stack Overflow用户
提问于 2019-09-11 04:48:10
回答 1查看 5.5K关注 0票数 4

想知道我应该包括哪些依赖项来连接公用日志到slf4j-api。

通过添加以下内容,我的构建是成功的:

代码语言:javascript
复制
"org.apache.logging.log4j:log4j-api:2.12.1"
"org.apache.logging.log4j:log4j-core:2.12.1"
"org.apache.logging.log4j:log4j-1.2-api:2.12.1"
"org.slf4j:slf4j-api:${slf4j_version}"
"org.apache.logging.log4j:log4j-slf4j-impl:2.12.1"
"org.slf4j:slf4j-jcl:1.7.25"

但无法启动我的服务:(获取java.lang.ExceptionInInitializerError.由: org.springframework.beans.factory.CannotLoadBeanClassException引起

EN

回答 1

Stack Overflow用户

发布于 2019-09-11 04:59:51

你需要在这里采取一些步骤。首先,您应该包括jcl-over-slf4j.jar文件,例如:

代码语言:javascript
复制
<!-- https://mvnrepository.com/artifact/org.slf4j/jcl-over-slf4j -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>1.7.28</version>
</dependency>

如果在运行时包含此JAR,则应该使用接收所有日志记录调用,然后将其重新路由到您的SLF4J外观(您可以使用您想要的任何实现进行日志记录)。

但是,有一个额外的步骤,你应该采取理想的做法。您应该在Maven POM中将commons-logging的依赖范围更改为provided

代码语言:javascript
复制
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>[1.0,)</version> <!-- include all possible versions -->
    <scope>provided</scope>   <!-- IMPORTANT -->
</dependency>

通过提供commons-logging,您可以告诉Maven在构建时为需要它的任何组件(例如Spring)包含它,但是在运行时将它排除在最后的JAR输出中。相反,上面提到的桥JAR jcl-over-slf4j.jar将在运行时出现。例如,Spring仍将在运行时调用Jakarta,但这实际上将被输入到SLF4J外观中,从而最终得到您所提供的任何日志记录实现。

查看slf4j文档,它讨论了上面提到的一些事情。

附带注意:您可能希望在项目上运行mvn dependency:tree,以验证您的Maven库配置是否正确。除了选择在SLF4J中使用的实现之外,您不应该看到任何其他日志记录实现。特别是,commons-logging应该只显示为provided,也就是说它不应该出现在您的JAR类路径上。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57882301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档