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

完整教程:Java Maven Log4j 项目日志打印

Java Maven Log4j 项目日志打印

  • 1 依赖
  • 2 配置
  • 3 测试
    • 1 Log4j
    • 2 Lombok
    • 3 结果

SLF4J 是日志接口,代码中只依赖它,后续可切换 Log4j2 等实现(无需改代码)。
Logback 是 SLF4J 的默认实现,性能优于 Log4j,且内置 RollingFileAppender(滚动日志)。

1 依赖

依赖解释
SLF4J-1.7.36最后一个官方明确支持 JDK 1.8 的 1.7.x 版本,稳定无兼容问题。
Logback-1.2.11与 SLF4J 1.7.x 完全兼容,且原生支持 JDK 1.8 的所有特性,滚动日志功能不受影响。

Java 日志设计遵循 “面向接口编程” 思想,这两个依赖分别承担“日志标准”和“标准实现”的角色,解耦日志 API 与具体功能逻辑:

依赖名称角色核心职责类比(便于理解)
slf4j-api(SLF4J)日志门面(接口层)定义统一的日志操作接口(如 LoggerLoggerFactory),屏蔽底层实现差异相当于“日志界的 JDBC 规范”
logback-classic日志实现(功能层)实现 SLF4J 接口,提供日志打印、滚动、彩色输出等具体功能相当于“日志界的 MySQL 驱动”
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gohope</groupId>
<artifactId>TaskMission</artifactId>
<version>1.0.0</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- Java 通用工具 --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.41</version></dependency><!-- 1. SLF4J 日志门面(JDK 1.8 兼容版本) --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.36</version> <!-- 1.7.x 系列是 JDK 1.8 长期支持版本 --></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version></dependency><!-- 2. Logback 日志实现(与 SLF4J 1.7.x 兼容,支持 JDK 1.8) --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.11</version> <!-- 1.2.x 系列适配 JDK 1.8,无语法兼容问题 --></dependency></dependencies></project>

2 配置

项目Value
滚动策略TimeBasedRollingPolicy 是按时间滚动的核心,fileNamePattern 定义归档文件名(必须包含 %d 日期占位符)。
日志路径logs/app.log 是当前日志文件(始终写入最新日志),归档文件会自动生成 app-2025-11-12.log 格式。
日志保留maxHistory=30 表示保留 30 天历史日志,totalSizeCap=1GB 限制总日志大小(可选,防止磁盘溢出)。
文件编码显式指定 UTF-8 避免中文乱码。
编译验证使用 JDK 1.8 编译项目,不会出现 UnsupportedClassVersionError(Logback 1.2.11 和 SLF4J 1.7.36 的编译目标是 JDK 1.6+)。
功能验证启动项目后,logs 文件夹会正常生成 app.log(当前日志)和 app-2025-11-12.log(归档日志),滚动策略完全生效。
冲突处理如果项目中引入了其他日志框架(如 commons-logging、log4j),需通过 exclusion 排除,避免冲突:

需要在 src/main/resources 下创建 Logback 的配置文件 logback.xml(Logback 会自动识别该文件名),核心配置 按日期滚动日志。
完整配置文件(logback.xml)

<?xml version="1.0" encoding="UTF-8"?><configuration scan="true" scanPeriod="60 seconds"> <!-- 自动扫描配置文件变更(每60秒) --><!-- 1. 定义日志输出格式 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><!-- 控制台输出格式:时间 [线程名] 日志级别 类名 - 日志信息 --><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} [%file:%line] - %msg%n </pattern><charset>UTF-8</charset> <!-- 解决中文乱码 --></encoder></appender><!-- 2. 按日期滚动的文件日志(核心配置) --><appender name="FILE_ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 2.1 日志文件保存路径(相对路径/绝对路径均可) --><file>logs/app.log</file><!-- 2.2 滚动策略:按日期滚动(一天一个文件) --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 归档日志文件名格式:app-2025-11-12.log(日期后缀) --><fileNamePattern>logs/app-%d{yyyy-MM-dd}.log</fileNamePattern><!-- 日志保留天数:保留30天的历史日志,自动删除过期文件 --><maxHistory>60</maxHistory><!-- 可选:限制所有日志文件总大小(例如 1GB),防止磁盘占满 --><totalSizeCap>5GB</totalSizeCap></rollingPolicy><!-- 2.3 日志输出格式(文件中包含的字段) --><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} [%file:%line] - %msg%n</pattern><charset>UTF-8</charset></encoder></appender><!-- 3. 全局日志级别(DEBUG/INFO/WARN/ERROR) --><!-- 级别说明:DEBUG < INFO < WARN < ERROR,只输出 >= 该级别的日志 --><root level="INFO"><appender-ref ref="CONSOLE"/> <!-- 同时输出到控制台 --><appender-ref ref="FILE_ROLLING"/> <!-- 输出到滚动日志文件 --></root><!-- 可选:单独配置某个包的日志级别(例如降低 Spring 框架的日志级别) --><logger name="org.springframework" level="WARN" additivity="false"><appender-ref ref="FILE_ROLLING"/></logger></configuration>

3 测试

1 Log4j

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LogTest1 {
private static final Logger log = LoggerFactory.getLogger(LogTest1.class);
public static void main(String[] args) {
log.error("测试日志1 Log4j");
}
}

2 Lombok

import lombok.extern.slf4j.Slf4j;
@Slf4j
public class LogTest2 {
public static void main(String[] args) {
log.error("测试日志2 Lombok");
}
}

3 结果

2025-11-12 17:39:17.348 [main] ERROR LogTest1 [LogTest1.java:10] - 测试日志1 Log4j
2025-11-12 17:39:21.675 [main] ERROR LogTest2 [LogTest2.java:6] - 测试日志2 Lombok

在这里插入图片描述

http://www.zskr.cn/news/78609.html

相关文章:

  • 2025年靠谱的泥水盾构机/岩石盾构机品牌厂家排行榜
  • 2025年比较好的顶管机中继间/矩形顶管机品牌厂家排行榜(热门)
  • Arbess零基础学习 - 使用Arbess+GitLab+Hadess搭建Java项目自动化构建/主机部署/上传制品
  • 2025年高强发泡混凝土自流平实力厂商排名:靠谱的发泡混凝土
  • 2025年市面上正规的尘埃在线监测系统工厂排名,0.1um尘埃粒子计数器/便携式粒子计数器/尘埃在线监测系统生产厂家哪家强
  • 必看!2025年高口碑LED源头厂家推荐榜
  • 运河区农村自建房找谁好?河北沧州运河区自建房公司 / 机构深度评测口碑推荐榜
  • FreeRTOS 在 AS32系列RISC-V 架构MCU电机驱动中的应用实践与优化 - 指南
  • 2025年国内铜球生产厂家推荐,看看哪家技术强?
  • 2026年河北石家庄井陉矿区农村自建房推荐榜,图南建房宝领衔 六家实力公司赋能乡村宜居生活
  • 创建产品,提出研发需求并审批
  • 2025年植保机锂电池厂家推荐与聚合物锂电池产品解析
  • 头部压铸车间通风降温工业冷风机厂家,注塑车间降温/工厂车间降温通风/铸造车间通风降温/铁皮棚车间通风降温工业冷风机品牌口碑推荐
  • 2025年北京企业贷款服务推荐:企业贷款服务哪家优?
  • 2025年长三角地区泡沫混凝土厂商榜单:诚信的泡沫混凝土供应
  • 2025年工业测温温度计品牌排名:低温温度计、温度计按需定制
  • 2025 全球电感品牌 TOP10:创新驱动 + 场景深耕,引领行业高质量发展
  • 10款AI降重工具精选:轻松通过AIGC检测的专业方案
  • 2025年工会活动策划公司推荐:工会活动策划公司哪家可靠
  • latex写论文时用visio生成eps图片格式方法及去除边框方法
  • 2025年北京企业BIP系统选型避坑排行榜,好业财/好会计/制造云/供应链云/人力云/协同云/好生意/税务云/财务云BIP管理系统找哪家
  • 2025年度传感器生产制造商TOP5推荐,勒振传感器口碑出众
  • 【2025-12-07】连岳摘抄
  • 2025年中国五大玻璃钢格栅正规厂家推荐:靠谱厂家有哪些?
  • shell sort排序
  • 2025年热门的铸铁电加热器实力与信誉双榜(权威推荐)
  • CG-85C 振弦式土压力计 岩土压力变化及埋设地温度同时监测
  • 2025年口碑好的车载点烟器/车载点烟器充电线厂家选购全指南(完整版)
  • 2025塑料制袋机品牌TOP5权威推荐:华裕超大号制袋机性能
  • 2025年杭州五大高德团购服务商推荐:高德团购服务商家服务哪