一. LogBack 日志简介
- 常用处理java的日志组件 slf4j,log4j,logback,common-logging 等
- logBack是在log4j基础的改良,但不能单独使用,可配合slf4j使用
- logBack核心对象
- Logger:日志记录器
- Appender:指定日志输出目的地,可以是控制台或文件
- Layout:日志布局,用于格式化日志信息的输出
- 日志级别:debug<info<warn<error
- Log4j日志转换为logBack在线工具(可以将log4j.properties文件内容转成logback.xml) https://logback.qos.ch/translator/
二. spring boot 默认日志格式
从左到右依次介绍
- 日期时间:精确到毫秒
- 日志级别:ERROR, WARN, INFO, DEBUG
- 进程 id
- 分割符:用于区分实际的日志记录
- 线程名:在方括号
- 日志名字:通常是执行所运行的包名,类名
- 日志信息
三. 日志文件输出
- springboot整合logback参考文档: https://docs.spring.io/spring-boot/docs/2.2.5.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-logging
- LogBack官网:https://logback.qos.ch/manual/index.html
- 在默认情况下:spring boot只输出到控制台,不会写入日志文件,日志信息属于logBack。
- 如果想要写入日志文件,整合LogBack:
在工程的Resources中创建日志文件logback-spring.xml,官方推荐 -spring.xml结尾 - 配置文件:logback-spring.xml(不要随意修改配置文件名)
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="consoleApp" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
</pattern>
</layout>
</appender>
<appender name="fileInfoApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<pattern>
%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
</pattern>
</encoder>
<!-- 滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 路径 -->
<fileNamePattern>app_log/log/app.info.%d.log</fileNamePattern>
</rollingPolicy>
</appender>
<appender name="fileErrorApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>
%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
</pattern>
</encoder>
<!-- 设置滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 路径 -->
<fileNamePattern>app_log/log/app.err.%d.log</fileNamePattern>
<!-- 控制保留的归档文件的最大数量,超出数量就删除旧文件,假设设置每个月滚动,
且<maxHistory> 是1,则只保存最近1个月的文件,删除之前的旧文件 -->
<MaxHistory>1</MaxHistory>
</rollingPolicy>
</appender>
<root level="INFO">
<!-- 日志级别为INFO -->
<appender-ref ref="consoleApp"/>
<appender-ref ref="fileInfoApp"/>
<appender-ref ref="fileErrorApp"/>
</root>
</configuration>
- 代码编写测试
package cn.hp.springboot_day05.controller;
import cn.hp.springboot_day05.utils.JsonData;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/log")
public class LogController {
private Logger logger = LoggerFactory.getLogger(Logger.class);
@RequestMapping("/test")
public Object test(){
logger.error("error 级别日志");
logger.info("info 级别日志");
logger.debug("debug 级别日志");
logger.warn("warn 级别日志");
return JsonData.buildSuccess();
}
}
- 小工具JsonData.java:https://blog.csdn.net/weixin_43330884/article/details/105142483
- 效果:
- 其中输出的日志信息在这里:
点击即可查看