Java笔记-21、Web后端实战-日志技术

项目开发中,不推荐使用sout的方式记录日志。

程序中的日志,是用来记录应用程序的运行信息、状态信息、错误信息等。

  1. JUL:这是JavaSE平台提供的官方日志框架,也被称为JUL。配置相对简单,但不够灵活,性能较差。
  2. Log4j:一个流行的日志框架,提供了灵活的配置选项,支持多种输出目标。
  3. Logback:基于Log4j升级而来,提供了更多的功能和配置选项,性能优于Log4j。
  4. ⭐️Slf4j (Simple Logging Facade for Java):简单日志门面,提供了一套日志操作的标准接口及抽象类,允许应用程序使用不同的底层日志框架。

Logback入门

  • 准备工作:引入logback的依赖(springboot项目中该依赖已传递)、配置文件logback.xml。
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.4.11</version>
</dependency>
  • 记录日志:定义日志记录对象Logger,Logger是sli4j的接口,记录日志。
private static final Logger log = LoggerFactory.getLogger(LogTest.class);
log.info();
log.debug();

logback.xml放在main-java-resources下。

<?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>

	<!-- 日志输出级别 -->
	<root level="ALL">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="FILE" />
	</root>
</configuration>

配置文件

logback.xml配置文件是对Logback日志框架输出的日志进行控制的,可以来配置输出的格式、位置及日志开关等。

控制台输出:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"></appender>
系统文件输出:
<appender name="FILE" class="ch.qos.logback.core.ConsoleAppender"></appender>
开启日志ALL,关闭日志OFF,日志级别:
<root level="debug">
  <appender-ref ref="STDOUT" />
  <appender-ref ref="FILE" />
</root>

日志级别

日志级别 说明 记录方式
trace 追踪,记录程序运行轨迹 【使用很少】 log.trace("...")
debug 调试,记录程序调试过程中的信息,实际应用中一般将其视为最低级别 【使用较多】 log.debug("...")
info 记录一般信息,描述程序运行的关键事件,如:网络连接、io操作 【使用较多】 log.info("...")
warn 警告信息,记录潜在有害的情况 【使用较多】 log.warn("...")
error 错误信息 【使用较多】 log.error("...")

从上到下级别越来越高。

注解的使用

注解:@Slf4j由lombok提供,在类上加这个注解就会自动往这个类里生成Logger的对象,对象名为log。

Logger提供了字符串拼接的简化方法,使用占位符,拼接多少变量就用几个占位符:

log.info("删除部门信息:" + id + "和" + id2);
log.info("删除部门信息:{} 和 {}",id,id2);
posted @ 2025-03-26 21:25  subeipo  阅读(33)  评论(0)    收藏  举报