这些是我的 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”。”
但是错误并没有得到解决。
您的设置应适用于 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 安装中加载库的同一类加载器加载它们。