Logback是由log4j创始人设计的另外一个开源日志组件,它分为下面下个模块:java
包括:
TRACE
、DEBUG
、INFO
、WARN
和ERROR
。git
TRACE
特别详细的系统运行完成信息,业务代码中,不要使用。(除非有特殊用意,不然请使用DEBUG
级别替代)github
DEBUG
debug
信息要有意义,最好有相关参数);DEBUG
信息INFO
系统运行信息spring
外部接口部分缓存
说明springboot
INFO
记录入参;WARN
不该该出现可是不影响程序、当前请求正常运行的异常状况:架构
业务异常的记录,好比:当接口抛出业务异常时,应该记录此异常。app
ERROR
影响到程序正常运行、当前请求正常运行的异常状况:框架
SQLException
和除了业务异常以外的全部异常(RuntimeException
和Exception
)。不该该出现的状况:
若是进行了抛出异常操做,请不要记录ERROR
日志,由最终处理方进行处理:异步
反例(不要这么作):
try{ .... }catch(Exception ex){ String errorMessage=String.format("Error while reading information of user [%s]",userName); logger.error(errorMessage,ex); throw new UserServiceException(errorMessage,ex); }
SpringBoot
工程自带logback
和slf4j
的依赖,因此重点放在编写配置文件上,须要引入什么依赖,日志依赖冲突通通都不须要咱们管了;logback
框架会默认加载classpath
下命名为logback-spring
或logback
的配置文件。ERROR
日志和其余日志分开,而且不一样级别的日志根据时间段进行记录存储。logback-spring.xml
示例<?xml version="1.0" encoding="utf-8"?> <configuration> <!-- 属性文件:在配置文件中找到对应的配置项 --> <springProperty scope="context" name="logPath" source="logging.path"/> <!-- 输出到控制台 --> <appender name="CONSOLE-LOG" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>[%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%L] [%-5p] %m%n</pattern> </layout> </appender> <!-- 获取比info级别高(包括info级别)但除error级别的日志 --> <appender name="INFO-LOG" 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>[%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%L] [%-5p] %m%n</pattern> </encoder> <!-- 指定收集策略:滚动策略--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 指定生成日志保存地址 --> <fileNamePattern>${logPath}/info.%d.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> </appender> <appender name="ERROR-LOG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 指定过滤策略 --> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <encoder> <!-- 指定日志输出格式 --> <pattern>[%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%L] [%-5p] %m%n</pattern> </encoder> <!-- 指定收集策略:滚动策略--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--指定生成日志保存地址 --> <fileNamePattern>${logPath}/error.%d.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> </appender> <!-- 异步输出 --> <appender name="ASYNC-INFO" class="ch.qos.logback.classic.AsyncAppender"> <!-- 不丢失日志.默认的,若是队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --> <discardingThreshold>0</discardingThreshold> <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --> <queueSize>256</queueSize> <!-- 添加附加的appender,最多只能添加一个 --> <appender-ref ref="INFO-LOG"/> </appender> <appender name="ASYNC-ERROR" class="ch.qos.logback.classic.AsyncAppender"> <!-- 不丢失日志.默认的,若是队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --> <discardingThreshold>0</discardingThreshold> <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --> <queueSize>256</queueSize> <!-- 添加附加的appender,最多只能添加一个 --> <appender-ref ref="ERROR-LOG"/> </appender> <!-- 指定最基础的日志输出级别 --> <root level="info"> <appender-ref ref="CONSOLE-LOG" /> <appender-ref ref="INFO-LOG" /> <appender-ref ref="ERROR-LOG" /> </root> </configuration>
项目配置文件中配置日志输出地址
logging: path: ./logs
<root>
标签:指定最基础的日志输出级别;
<appender-ref>
标签,添加append
<appender>
标签:指定日志的收集策略
name
属性指定appender
命名class
属性指定输出策略,一般有两种,控制台输出和文件输出,文件输出就是将日志进行一个持久化。ConsoleAppender
将日志输出到控制台。<filter>
标签:指定过滤策略
<level>
:指定过滤的类型。<encoder>
标签:使用该标签下的<pattern>
标签指定日志输出格式。
<rollingPolicy>
标签:指定收集策略,好比基于时间进行收集