SLF4J:Class 路径在 WSO2 IS 启动期间包含多个 SLF4J 绑定

SLF4J: Class path contains multiple SLF4J bindings during WSO2 IS startup

我的一个 WSO2 IS(身份服务器)由于物理主机错误而崩溃,当我想恢复 IS 服务时,它只是挂起并且不会在这些警告消息后立即启动:

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [bundleresource://539.fwk120694604:1/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/usr/lib64/wso2/wso2is/5.6.0/repository/deployment/server/webapps/api%23identity%23entitlement/WEB-INF/lib/slf4j-simple-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]

除了 IS 进程挂起,也没有生成日志,所以根据警告消息,WSO2 IS 有冲突的日志 classes,但我找不到这个 class 去向:

bundleresource://539.fwk120694604:1/org/slf4j/impl/StaticLoggerBinder.class

我当前的 WSO2 IS 版本是 5.6.0,由于某些限制,我无法升级版本,我认为版本控制不是这里的问题。

我在整个互联网上进行了搜索,但主要涉及编辑 pom / maven 之类的东西,但 WSO2 IS 应该是现成的产品吧?好吧,所以到现在我还是找不到任何解决办法。

哪位好心人可以帮我解决这个问题?

谢谢。

这在 WSO2IS 中作为警告抛出

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [bundleresource://540.fwk1316864772:1/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/maneesha/WSO2/Whosebug/wso2is-5.6.0/wso2is-5.6.0/repository/deployment/server/webapps/api%23identity%23entitlement/WEB-INF/lib/slf4j-simple-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]

发生这种情况是因为SLF4J jar 文件在

  • <IS-HOME>/repository/components/plugins/slf4j.log4j12_1.6.1.jar

  • <IS-HOME>/repository/deployment/server/webapps/api#identity#entitlement/WEB-INF/lib/slf4j-simple-1.6.1.jar

两者都包含 StaticLoggerBinder.class 这可以在构建 api#identity#entitlement.war 文件时使用依赖管理来避免。

https://github.com/wso2/carbon-identity-framework/blob/ed3e0a150adb8363f2bbd7f91a249b66c069a992/components/entitlement/org.wso2.carbon.identity.entitlement.endpoint/pom.xml#L85

如您所见,没有提供范围,可以使用以下依赖管理使 SLF4J 库不捆绑到 api#identity#entitlement.war 文件

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <scope>provided</scope>
</dependency>