Logback——日志技术(基础)

发布于:2025-07-11 ⋅ 阅读:(17) ⋅ 点赞:(0)

Logback 是 Java 社区广泛使用的日志框架,由 Log4j 创始人设计,作为其改进版本。它分为三个模块:

  • logback-core:基础功能模块。
  • logback-classic:兼容 SLF4J 的日志实现。
  • logback-access:与 Servlet 容器集成,提供 HTTP 访问日志功能。

一、准备工作

1. Logback依赖引入

在spring boot项目的起步依赖已经传递此依赖

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.4.11</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.4.11</version>
        </dependency>

2. 配置文件Logback

Logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<!-- 控制台输出 -->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<!--格式化输出:%d 表示日期,%thread 表示线程名,%-5level表示级别从左显示5个字符宽度,%logger显示日志记录器的名称, %msg表示日志消息,%n表示换行符 -->
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n</pattern>
		</encoder>
	</appender>

	<!-- 系统文件输出 -->
	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<!-- 日志文件输出的文件名, %i表示序号 -->
			<FileNamePattern>D:/tlias-%d{yyyy-MM-dd}-%i.log</FileNamePattern>
			<!-- 最多保留的历史日志文件数量 -->
			<MaxHistory>30</MaxHistory>
			<!-- 最大文件大小,超过这个大小会触发滚动到新文件,默认为 10MB -->
			<maxFileSize>10MB</maxFileSize>
		</rollingPolicy>

		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<!--格式化输出:%d 表示日期,%thread 表示线程名,%-5level表示级别从左显示5个字符宽度,%msg表示日志消息,%n表示换行符 -->
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n</pattern>
		</encoder>
	</appender>

	<!-- 日志输出级别 -->
	<!-- OFF(关闭日志), ERROR(仅输出错误信息), WARN(输出警告信息), INFO(输出常规信), DEBUG(输出调试信息), TRACE(最详细的日志信), ALL(开启日志) -->
	<root level="ALL">
		<!-- 输出到控制台 -->
		<appender-ref ref="STDOUT" />
		<!-- 输出到文件 -->
		<appender-ref ref="FILE" />
	</root>
</configuration>

LogTest.Java

package com.zhq;

import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogTest {

    public static final Logger log = LoggerFactory.getLogger(LogTest.class);
    @Test
    public void testLog(){
//        System.out.println(LocalDateTime.now() + " : 开始计算...");
        log.debug("开始计算...");

        int sum = 0;
        int[] nums = {1, 5, 3, 2, 1, 4, 5, 4, 6, 7, 4, 34, 2, 23};
        for (int num : nums) {
            sum += num;
        }
        
//        System.out.println("计算结果为: "+sum);
        log.info("计算结果为: " + sum);
//        System.out.println(LocalDateTime.now() + "结束计算...");
        log.debug("结束计算...");
    }

}

使用 @Slf4j 注解可以省略public static final Logger log=LoggerFactory.getLogger(LogTest.class);

注意 @Slf4j 的导入: import lombok.extern.slf4j.Slf4j;

运行结果

优先级(由高到低)

级别 说明
OFF 关闭日志,不输出任何日志信息,通常用于生产环境减少日志输出。
ERROR
ERROR 仅输出错误信息,适用于关注系统异常或严重问题的场景。
WARN 输出警告信息,表示潜在的问题但不影响程序运行。
INFO 输出常规信息,用于记录程序运行过程中的关键步骤,适合日常运维监控。
DEBUG 输出调试信息,用于开发阶段排查问题,显示更详细的运行状态。
TRACE 最详细的日志信息,比 DEBUG 更细粒度,通常用于追踪具体执行流程。
ALL 输出所有日志信息,包括所有级别,适用于全面调试。

使用建议:

  • 开发环境:推荐设置为 DEBUG 或 TRACE,便于排查问题。
  • 测试环境:可以设置为 INFO 或 WARN,观察主要流程和异常。
  • 生产环境:通常设置为 WARN 或 ERROR,避免过多日志影响性能。

网站公告

今日签到

点亮在社区的每一天
去签到