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