Glassfish/Payara SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”

问题描述 投票:0回答:1

这些是我的 pom 文件中的日志依赖项:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.20.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.20.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.20.0</version>
</dependency>

这是我的 log4j2.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Development -->
<Configuration status="trace" strict="true" monitorInterval="30">
    <Properties>
        <Property name="logs">../logs/rpay/batch</Property>
    </Properties>
    <Appenders>
        <Appender type="Console" name="console" target="SYSTEM_OUT">
            <Layout type="PatternLayout" pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [executionId:%X{executionId}]  %level: %msg%n"/>
        </Appender>

        <Appender type="RollingFile" name="standard" filename="${logs}/standard.log" filePattern="${logs}/standard.%d{yyyy-MM-dd}.log.gz">
            <Layout type="PatternLayout" pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [executionId:%X{executionId}]  %level: %msg%n"/>
            <Policy type="TimeBasedTriggeringPolicy" />
        </Appender>

        <Appender type="RollingFile" name="error" filename="${logs}/error.log" filePattern="${logs}/error.%d{yyyy-MM-dd}.log.gz">
            <Layout type="PatternLayout" pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [executionId:%X{executionId}]  %level: %msg%n%exception%n"/>
            <Policy type="TimeBasedTriggeringPolicy" />
        </Appender>

        <Appender type="RollingFile" name="outside" filename="${logs}/outside.log" filePattern="${logs}/outside.%d{yyyy-MM-dd}.log.gz">
            <Layout type="PatternLayout" pattern="%d{yyyy-MM-dd HH:mm:ss.SSS},%t,%X{executionId},%msg%n"/>
            <Policy type="TimeBasedTriggeringPolicy" />
        </Appender>
    </Appenders>

    <Loggers>
        <Logger name="error" level="debug" additivity="false">
            <AppenderRef ref="console" />
            <AppenderRef ref="standard" />
            <AppenderRef ref="error"/>
        </Logger>

        <Logger name="outside" level="info" additivity="false">
            <AppenderRef ref="outside" />
        </Logger>

        <Root level="debug">
            <AppenderRef ref="console" />
            <AppenderRef ref="standard" />
        </Root>
    </Loggers>
</Configuration>

我尝试了此处列出的所有解决方案。

如何修复“SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。”

但是错误并没有得到解决。

java glassfish log4j2 slf4j payara
1个回答
0
投票

您的设置应适用于 GlassFish 7.0.10 或更高版本。

在较旧的 GlassFish 版本或 Payara 服务器中,它不起作用,因为类加载器加载类的方式不同。在那里,slf4j 类存在于 GlassFish/Payara 安装中。它们由父类加载器加载,并且在您的应用程序中看不到 log4j 绑定类。这已在 https://stackoverflow.com/a/77074140/784594 中进行了讨论,并确认它在 GlassFish 7.0.10 中有效。

解决方法是将 log4j 和 slf4j JAR 文件以及 log4j.xml 文件从应用程序复制到 GlassFish 域的 lib 目录中,以便由在 GlassFish 安装中加载库的同一类加载器加载它们。

© www.soinside.com 2019 - 2024. All rights reserved.