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

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.xdnf.cn/news/15490.html

相关文章:

  • C++ 计数排序、归并排序、快速排序
  • Elasticsearch+Logstash+Filebeat+Kibana部署
  • xss作业
  • uniapp
  • 2025秋招突围战:AI智能监考如何重构远程笔试公平防线?
  • 深入解析 AWS RDS Proxy
  • 达梦数据库配置兼容MySQL
  • 从 “洗澡难” 到 “洗得爽”:便携智能洗浴机如何重塑生活?
  • Vue 结合 Zabbix API 获取服务器 CPU、内存、GPU 等数据
  • LabVIEW Occurrence功能
  • go项目实战
  • 高频面试雷区:Java Object六大核心方法源码剖析
  • Linux Ubuntu apt包管理器安装K8s1.30.1+Ingress-Nginx
  • fastadmin中ajax弹窗修改文字为英文
  • AJAX 技术
  • MinIO介绍以及结合SpringBoot的应用场景详解
  • 数据降维方法:PCA
  • 微算法科技研究量子视觉计算,利用量子力学原理提升传统计算机视觉任务的性能
  • flink sql读hive catalog数据,将string类型的时间戳数据排序后写入kafka,如何保障写入kafka的数据是有序的
  • 动态规划题解_打家劫舍【LeetCode】
  • 解决容器dns问题
  • [时序数据库-iotdb]时序数据库iotdb的安装部署
  • Go从入门到精通(25) - 一个简单web项目-实现链路跟踪
  • audiorecord 之 抢占优先级
  • 数据库询问RAG框架Vanna的总体架构
  • CMake基础:覆盖项目开发的五大配套工具
  • 数据结构——顺序表的相关操作
  • 信息学奥赛一本通 1552:【例 1】点的距离
  • 【Keil】C/C++混合编程的简单方法
  • 内存的基础相关知识,什么是内存,内存管理