Logback是由log4j创始人设计的一个开源日志组件,并通过了严格充分的测试。它主要是占用空间小,执行效率高,还提供了在其他日志框架中没有的独特而有用的特性。
StringBoot项目默认使用logback组件作为日志管理。在SpringBoot项目中我们不需要额外的添加logback的依赖,因为在spring-boot-starter或者spring-boot-starter-web中已经包含了logback的依赖
Logback读取配置文件的步骤:
logback
每个logger都关联到logger上下文,默认上下文名称为“default”。但可以使用
用来定义变量值的标签,它有两个属性 name 和 value:
UTF-8
%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{requestId}] %-5level %-50logger{50}: %msg%n
appender用来格式化日志输出节点,有连个属性name和class,class用来指定那种输出策略
requestId
start
false
${dir}/%d{yyyy-MM-dd}/${requestId}.log.zip
%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n
**FileAppender:**如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。
**RollingFileAppender:**当为true时,不支持FixedWindowRollingPolicy。支持TimeBasedRollingPolicy,但是有两个限制,1不支持也不允许文件压缩,2不能设置file属性,必须留空。
简介:
logback具有过滤器支持。logbcak允许给日志记录器appender配置一个或多个Filter(或者给整体配置一个或多个TurboFilter),来控制:当满足过滤器指定的条件时,才记录日志(或不满足条件时,拒绝记录日志)。logback支持自定义过滤器,当然logback也自带了一些常用的过滤器,在绝大多数时候,自带的过滤器其实就够用了,一般是不需要自定义过滤器的。
logback提供的过滤器支持主要分两大类:
ch.qos.logback.core.filter.Filter
ch.qos.logback.classic.turbo.TurboFilter
过滤器 |
来源 |
说明 |
常用 |
LevelFilter |
Filter |
对指定level的日志进行记录(或不记录),对不等于指定level的日志不记录(或进行记录) |
是 |
ThresholdFilter |
Filter |
对指定level的日志进行记录(或不记录),对不等于指定level的日志不记录(或进行记录) |
是 |
EvaluatorFilter |
Filter |
对满足指定表达式的日志进行记录(或不记录),对不满足指定表达式的日志不作记录(或进行记录) |
是 |
MDCFilter |
TurboFilter |
若MDC域中存在指定的key-value,则进行记录,否者不作记录 |
是 |
DuplicateMessageFilter |
TurboFilter |
根据配置不记录多余的重复的日志 |
是 |
MarkerFilter |
TurboFilter |
针对带有指定标记的日志,进行记录(或不作记录) |
否 |
TurboFilter的性能是优于Filter的,这是因为TurboFilter的作用时机是在创建日志事件ILoggingEvent对象之前,而Filter的作用时机是在创建之后。若一个日志注定是会被过滤掉不记录的,那么创建ILoggingEvent对象(包括后续的参数组装方法调用等)这个步骤无疑是非常消耗性能的
这里主要介绍一下ThresholdFilter和LevelFilter:
ERROR
ERROR
DENY
ACCEPT
FilterReply有三种枚举值:
示例:
${dir}/%d{yyyy-MM-dd}/error.%d{yyyy-MM-dd}.%i.log.gz
50MB
30
%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n
ERROR
子节点:
用来指定某一个包或者具体某一个类的日志打印级别,以及指定
示例:
控制com.example包下的日志打印,打印级别为“ERROR”;additivity属性为false,表示此loger的打印信息不再向上级传递;指定了名字为“error”的appender;
logger中可以有多个appender-ref
子节点:
root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性。level默认是DEBUG。
示例:
logback
UTF-8
%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{requestId}] %-5level %-50logger{50}: %msg%n
false
${dir}/%d{yyyy-MM-dd}/request.log.zip
%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{requestId}] %-5level %-50logger{50}: %msg%n
${dir}/%d{yyyy-MM-dd}/error.%d{yyyy-MM-dd}.%i.log.gz
50MB
30
%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{requestId}] %-5level %-50logger{50}: %msg%n
ERROR
参考链接: Logback配置文件