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>
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论