Logback——日志技术(基础)

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

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

一、准备工作

1. Logback依赖引入

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

XML 复制代码
        <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 复制代码
<?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

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,避免过多日志影响性能。
相关推荐
Dragon Wu3 分钟前
Taro 自定义tab栏和自定义导航栏
前端·javascript·小程序·typescript·前端框架·taro
艾小码9 分钟前
2025年前端菜鸟自救指南:从零搭建专业开发环境
前端·javascript
后端小张12 分钟前
【JAVA 进阶】Mybatis-Plus 实战使用与最佳实践
java·spring boot·spring·spring cloud·tomcat·mybatis·mybatis plus
崎岖Qiu14 分钟前
【设计模式笔记07】:迪米特法则
java·笔记·设计模式·迪米特法则
摇滚侠2 小时前
Spring Boot3零基础教程,SpringApplication 自定义 banner,笔记54
java·spring boot·笔记
青云交2 小时前
Java 大视界 -- Java 大数据机器学习模型在游戏用户行为分析与游戏平衡优化中的应用
java·大数据·机器学习·数据存储·模型构建·游戏用户行为分析·游戏平衡优化
暗武逢天5 小时前
Java导出写入固定Excel模板数据
java·导出数据·easyexcel·excel固定模板导出
摇滚侠5 小时前
Spring Boot3零基础教程,KafkaTemplate 发送消息,笔记77
java·spring boot·笔记·后端·kafka
namekong85 小时前
清理谷歌浏览器垃圾文件 Chrome “User Data”
前端·chrome
开发者小天6 小时前
调整为 dart-sass 支持的语法,将深度选择器/deep/调整为::v-deep
开发语言·前端·javascript·vue.js·uni-app·sass·1024程序员节