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
...
相关推荐
色空大师1 天前
【debug调试详解-idea】
java·ide·intellij-idea·调试·远程调试
程序猿阿越1 天前
AutoMQ源码(一)读、写、Compaction
java·后端·源码
ywl4708120871 天前
jwt生产token,简单版helloworld
java·数据库·spring
未若君雅裁1 天前
生产问题排查与性能瓶颈定位:日志、监控、链路追踪、压测与Arthas
java·web安全
器灵科技1 天前
AI视频工具实测:Seedance/可灵/HappyHorse谁最能打?
java·运维·数据库·人工智能·github
南部余额1 天前
RabbitMQ 进阶:延迟队列完全指南
java·分布式·spring·rabbitmq
phltxy1 天前
Spring AI Agents 智能体模式实战
java·人工智能·spring
摇滚侠1 天前
MyBatis 入门到项目实战 特殊 SQL 的执行 34-37
java·sql·mybatis
phltxy1 天前
Spring AI 可观测性与 Zipkin 实战
java·人工智能·spring
兰令水1 天前
leecodecode【面试150】【2026.6.13打卡-java版本】
java·算法·leetcode