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 小时前
Java 程序员的 AI 进化论 | Spring Boot 搭企业智能客服,从设计到上线
java·spring boot·openai
旺仔学长 哈哈1 小时前
别只做车辆 CRUD:Spring Boot 共享汽车管理系统从预约到还车的完整实现---源码53766
java·spring boot·在线预约·共享汽车
weixin_BYSJ19871 小时前
springboot技能与工具共享小程序---附源码29657
java·javascript·spring boot·python·小程序·django·php
茶本无香1 小时前
通用报表自动化框架:Java调用Shell传参执行PostgreSQL SQL模板
java·sql·postgresql·shell
weixin_BYSJ19871 小时前
flask民族服饰饰品商城小程序---附源码37399
java·javascript·spring boot·python·小程序·django·php
爱笑的源码基地1 小时前
智慧工地源码, 智慧工地环境监测系统架构与绿色施工闭环设计
java·源码·智慧工地·绿色工地
YDS8292 小时前
大营销平台 —— 第二阶段应用接口实现
java·spring boot·ddd
一水2 小时前
AI 时代审查思维:审查第一篇
java·jvm·数据库·spring
RainCityLucky2 小时前
Java Swing 自定义组件库分享(十六)
java·笔记·后端
爱跳舞的烤冷面2 小时前
自学嵌入式第N天(Linux篇——文件编程)
java·开发语言·前端