SpringBoot日志的使用解读
作者:Exill
本文主要介绍了SpringBoot中日志的使用方法,包括默认输出格式、使用Lombok简化日志代码、通过yml和xml配置日志等
SpringBoot默认使用SLF4J作为日志门面(相当于接口),Logback作为日志实现(实现可切换)
一.默认输出格式
1.日期时间
2.日志级别(从上至下级别越来越高):
TRACE
:追踪框架流程日志,一般不使用DEBUG
:调试日志INFO
:关键、感兴趣日志WARN
:警告日志ERROR
:错误日志
3.进程ID
4.---:消息分隔符
5.线程名:用[]包裹
6.Logger名:产生这条日志的类名
7.消息:具体日志内容
二.使用
@Service public class UserService{//创建UserService类对应的Logger(SLF4J包下) private Logger logger= LoggerFactory.getLogger(getClass()); public void useLogger() {//使用 Loggerlogger.trace("TRACE"); logger.debug("DEBUG"); logger.info("INFO {} {}", "参1", "参2"); logger.warn("WARN"); logger.error("ERROR"); }
导入lombok后使用@Slf4j注解,会自动创建变量名为log的Logger
只会输出INFO及以上的日志级别,因为SpringBoot默认日志级别为INFO
三.配置
通过yml文件配置日志(以logging开头的日志)
项目中通常不使用该方式
原因:
- 日志需要较多自定义,放yml里导致其他配置也难以阅读
- yml提供的日志配置只支持logback实现,切换实现后不可用
- yml提供的logback配置不够全面
通过xml配置日志
appender
:负责写日志的组件(输出到控制台、文件、日志服务器、消息队列等等)appender-ref
:引用某个appenderlayout
:配置日志输出格式springProfile
:配置日志在开发/测试/生产环境生效springProperty
:在xml配置中引用yml的配置值property
:在xml中定义值
logback-spring.xml模板示例
<?xml version="1.0" encoding="UTF-8"?> <configuration><!--读取yml配置中的spring.application.name值赋值给FILE_NAME变量--> <springProperty scope="context" name="FILE_NAME" source="spring.application.name"/><!--定义FILE_PATH变量--> <property name="FILE_PATH" value="./logs"/> <springProfile name="dev"><!--开发环境的日志配置--> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><!--输出到控制台--> <layout><!--设置日志格式--> <pattern>%d{yyyy-MM-dd HH:mm:ss}[%thread] %-5level %logger -%msg%n</pattern> </layout> </appender> <root level="info"><!--设置日志等级 及 生效appender--> <appender-ref ref="STDOUT"/> </root> </springProfile> <springProfile name="test"><!--测试环境的日志配置--> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <layout> <pattern>%d{yyyy-MM-dd HH:mm:ss}[%thread] %-5level %logger -%msg%n</pattern> </layout> </appender><!--输出到文件,文件会根据日期、大小进行归档--> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--文件路径--> <fileNamePattern>${FILE_PATH}/${FILE_NAME}%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxHistory>30</maxHistory><!--文件保存天数--> <maxFileSize>10MB</maxFileSize><!--一个文件最大值--> </rollingPolicy> <layout> <pattern>%d{yyyy-MM-dd HH:mm:ss}[%thread] %-5level %logger -%msg%n</pattern> </layout> </appender> <root level="info"> <appender-ref ref="STDOUT"/> <appender-ref ref="FILE"/> </root> </springProfile> <springProfile name="prod"><!--生产环境的日志配置--> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${FILE_PATH}/${FILE_NAME}%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxHistory>30</maxHistory> <maxFileSize>10MB</maxFileSize> </rollingPolicy> <layout> <pattern>%d{yyyy-MM-dd HH:mm:ss}[%thread] %-5level %logger -%msg%n</pattern> </layout> </appender> <root level="error"> <appender-ref ref="FILE"/> </root> </springProfile> </configuration>
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。