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,避免过多日志影响性能。
相关推荐
一定要AK4 小时前
Spring 入门核心笔记
java·笔记·spring
A__tao4 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
xiaotao1314 小时前
第九章:Vite API 参考手册
前端·vite·前端打包
午安~婉4 小时前
Electron桌面应用聊天(续)
前端·javascript·electron
KevinCyao4 小时前
java视频短信接口怎么调用?SpringBoot集成视频短信及回调处理Demo
java·spring boot·音视频
迷藏4944 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
彧翎Pro5 小时前
基于 RO1 noetic 配置 robosense Helios 32(速腾) & xsense mti 300
前端·jvm
小码哥_常5 小时前
解锁系统设置新姿势:Activity嵌入全解析
前端
之歆5 小时前
前端存储方案对比:Cookie-Session-LocalStorage-IndexedDB
前端
哟哟耶耶5 小时前
vue3-单文件组件css功能(:deep,:slotted,:global,useCssModule,v-bind)
前端·javascript·css