Logback是由log4j创始人设计的另一个开源日志组件,它分为下面下个模块:
包括:
TRACE、DEBUG、INFO、WARN和ERROR。
TRACE特别详细的系统运行完成信息,业务代码中,不要使用。(除非有特殊用意,否则请使用DEBUG级别替代)
DEBUGdebug信息要有意义,最好有相关参数);DEBUG信息INFO系统运行信息
外部接口部分
说明
INFO记录入参;WARN不应该出现但是不影响程序、当前请求正常运行的异常情况:
即将接近临界值的时候,例如:缓存池占用达到警告线;
业务异常的记录,比如:当接口抛出业务异常时,应该记录此异常。
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>标签:指定收集策略,比如基于时间进行收集
原文:https://www.cnblogs.com/youngdeng/p/12868497.html