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,避免过多日志影响性能。
相关推荐
探索java9 分钟前
Java并发编程中的StampedLock详解:原理、实践与性能优化
java·stampedlock
LuckyLay12 分钟前
使用 Docker 搭建 Rust Web 应用开发环境——AI教你学Docker
前端·docker·rust
界面开发小八哥21 分钟前
「Java EE开发指南」如何用MyEclipse将Java项目转换为Web项目?
java·ide·java-ee·eclipse·开发工具·myeclipse
pobu16831 分钟前
aksk前端签名实现
java·前端·javascript
烛阴36 分钟前
带参数的Python装饰器原来这么简单,5分钟彻底掌握!
前端·python
0wioiw041 分钟前
Flutter基础(前端教程⑤-组件重叠)
开发语言·前端·javascript
冰天糖葫芦1 小时前
VUE实现数字翻牌效果
前端·javascript·vue.js
南岸月明1 小时前
我与技术无缘,只想副业搞钱
前端
一个天蝎座 白勺 程序猿1 小时前
飞算JavaAI进阶:重塑Java开发范式的AI革命
java·开发语言·人工智能