Java的Gradle项目,使用SLF4J+Log4j2+log4j2.xml
Java的Gradle项目,使用SLF4J+Log4j2+log4j2.xml
gradel依赖配置
// SLF4J API (1.x)implementation 'org.slf4j:slf4j-api:1.7.30'// Log4j2 实现与 SLF4J 的桥接器(使用的是 SLF4J 1.x 对应的绑定)implementation "org.apache.logging.log4j:log4j-slf4j-impl:2.13.3"// Log4j2 API 和 Coreimplementation "org.apache.logging.log4j:log4j-api:2.13.3"implementation 'org.apache.logging.log4j:log4j-core:2.17.1'
注意:以上依赖和版本要一致,不然会导致日志输出错误
log4j2.xml
放在src/main/resources/log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="1"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/></Console><!-- 修改点:使用 ${sys:serverid} 来引用系统属性 --><RollingFile name="NormalFile" fileName="logs/${sys:serverId}/normal.log"filePattern="logs/${sys:serverId}/normal-%d{yyyy-MM-dd}-%i.log.gz"><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%F:%L-%t][%level] %msg%n"/><Policies><SizeBasedTriggeringPolicy size="100 MB"/><TimeBasedTriggeringPolicy interval="1" modulate="true"/></Policies><DefaultRolloverStrategy max="10"/></RollingFile><!-- 修改点:同上 --><RollingFile name="ErrorFile" fileName="logs/${sys:serverId}/error.log"filePattern="logs/${sys:serverId}/error-%d{yyyy-MM-dd}-%i.log.gz"><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%F:%L-%t][%level] %msg%n"/><Policies><SizeBasedTriggeringPolicy size="10 MB"/><TimeBasedTriggeringPolicy interval="1" modulate="true"/></Policies><DefaultRolloverStrategy max="10"/></RollingFile></Appenders><Loggers><Root level="DEBUG"><AppenderRef ref="Console"/><AppenderRef ref="NormalFile"/><AppenderRef ref="ErrorFile"/></Root></Loggers>
</Configuration>
LogCore.java代码
package org.game;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class LogCore {public static final Logger logger = LoggerFactory.getLogger(LogCore.class);public static void test() {logger.info("test");logger.error("error");}}
启动代码,先设置log4j2.xml的参数serverId
// 设置 serverId 系统属性,默认值为 20001System.setProperty("serverId", "20001");LogCore.test();
日志输出位置:
项目根目录下/logs/20001/normal.log,/logs/20001/error.log
2025-07-16 14:45:57.596 [LogCore.java:11-main][INFO] test
2025-07-16 14:45:57.601 [LogCore.java:12-main][ERROR] error
...