Java的Gradle项目,使用SLF4J+Log4j2+log4j2.xml

Java的Gradle项目,使用SLF4J+Log4j2+log4j2.xml

gradel依赖配置

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 和 Core
    implementation "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 复制代码
<?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代码

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

java 复制代码
    // 设置 serverId 系统属性,默认值为 20001
    System.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
...
相关推荐
Moss Huang2 小时前
docker-runc not installed on system
java·docker·容器
麦兜*4 小时前
Spring Boot 集成 Docker 构建与发版完整指南
java·spring boot·后端·spring·docker·系统架构·springcloud
Cisyam^4 小时前
Go环境搭建实战:告别Java环境配置的复杂
java·开发语言·golang
CHENFU_JAVA4 小时前
使用EasyExcel实现Excel单元格保护:自由锁定表头和数据行
java·excel
青云交5 小时前
Java 大视界 -- 基于 Java 的大数据实时流处理在智能电网分布式电源接入与电力系统稳定性维护中的应用(404)
java·大数据·分布式·智能电网·flink 实时流处理·kafka 数据采集·iec 61850 协议
仰望星空@脚踏实地6 小时前
maven scope 详解
java·maven·scope
M_Reus_116 小时前
Groovy集合常用简洁语法
java·开发语言·windows
带刺的坐椅6 小时前
10分钟带你体验 Solon 的状态机
java·solon·状态机·statemachine
小鹅叻6 小时前
MyBatis题
java·tomcat·mybatis
RainbowSea6 小时前
4. LangChain4j 模型参数配置超详细说明
java·langchain·ai编程