当前位置: 首页 > news >正文

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
...
http://www.dtcms.com/a/283427.html

相关文章:

  • 深度隐匿源IP:高防+群联AI云防护防绕过实战
  • C++-linux系统编程 10.内核原理基础
  • 用python程序通过指纹识别开关车门
  • 开源 python 应用 开发(六)网络爬虫
  • 健康生活,从细节开始
  • 线程学习day1---基础知识+pthread_create、self、exit、cancle、join
  • pymongo库:简易方式存取数据
  • Android 15 Settings 搜索框增加暗码功能实现
  • Windows10系统上Node.js的安装及环境配置
  • lua(xlua)基础知识点记录一
  • gem install报错解析
  • 小程序中状态管理Redux
  • ROCK Robotic R3 Pro -替代L2,适配多款无人机,支持机载、手持、车载以及船载
  • DrissionPage:一款让网页自动化更简单的 Python 库
  • 使用defineExpose暴露子组件的属性和方法、页面生命周期onLoad和onReady的使用
  • 【AI论文】可追溯证据增强的视觉基础推理:评估与方法论
  • OSS文件上传解析失败,错误:文件下载失败的排查与解决
  • 61.第二阶段x64游戏实战-抓取Lua分析本地和跨图寻路
  • Harbor 和 Helm
  • 陆面、生态、水文模拟与多源遥感数据同化的实践技术应用
  • ACL实验(思科设备)
  • 游戏开发中防止“范围蔓延”
  • Oracle 数据库常见等待事件参数详解
  • YOLO算法原理
  • 2025年中国品牌全球化发展分析:中国品牌在社交渠道、电商平台及官网流量方面显著增长
  • 测试开发工作日常用的提示词分享
  • 探秘京东外卖幕后:地图轨迹技术探寻
  • Java+Ollama 本地部署 DeepSeek-R1 对话机器人:从 0 到 1 实战指南
  • 动态规划的无后效性与马尔可夫性质相似关系的说明
  • [Java安全】JDK 动态代理