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
...
相关推荐
wbs_scy1 小时前
Linux C++ 高并发编程:线程池全链路深度解析,从原理到手撕实现
java·开发语言
JAVA面经实录9171 小时前
Linux 常用命令完整知识体系
java·linux·开发语言·汇编
Full Stack Developme3 小时前
Java LRU 与 LFU 算法及应用
java·开发语言·算法
程序员老油条5 小时前
WSL2 + Docker Desktop:Windows 下的完美 Java 开发环境
java·windows·docker·wsl2
shushangyun_6 小时前
2026智能采购商城系统选型指南:如何引领企业数字化采购升级
java·大数据·数据库·人工智能·机器学习
她说..6 小时前
Java 默认值设置方式
java·开发语言·后端·springboot
学渣超6 小时前
记一次分布式事务数据不一致的排查之旅:从超时到索引,层层剥茧
java·后端·架构
掉鱼的猫6 小时前
Agent Harness 实战指南:构建生产级 AI Agent 的"马具"框架
java·llm·aigc
带刺的坐椅7 小时前
Agent Harness 实战指南:构建生产级 AI Agent 的"马具"框架
java·ai·llm·agent·solon-ai
c238567 小时前
互斥锁高频面试题全解:从基础概念到底层实现,一文通关
java·c++·面试·职场和发展