日志等级:
日志级别从低到高:TRACE < DEBUG < INFO < WARN < ERROR < FATAL
当日志的级别大于或等于设置的日志级别时才会输出。
logback配置核心标签:
<appender></appender>:标签主要负责打印日志,设置日志输出位置,输出格式,日志文件的生成策略等;
<logger></logger>: 标签用来设置某个包或某个指定类的日志打印级别;
<root level=""></root> : 标签只有一个level属性,是logger的上级,<root>可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个root。
常用的日志追加器:
- RollingFileAppender:随着日志量的越来越大,或则随着时间的变动,会对文件进行切割。
- FileAppender:普通文件的日志追加器;
- ConsoleAppender:控制台的日志输出;
- AsyncAppender:异步日志追加;
常用的配置标签梳理:
property标签:
<!-- 简单的设置属性名和属性值的对应关系,方便后续引用-->
<!-- (%d表示时间格式)年月日时分秒毫秒+日志级别+线程+tranceId+日志信息+行数+换行-->
<!-- 2023/02/20-14:42:28 TRACE [http-nio-8080-exec-8 ][956f0ce67ecd4d1ea036321d1d7ec785] c.d.c.z.s.c.d.m.B.selectPage 149-->
<property name="log.pattern" value="%d{yyyy/MM/dd-HH:mm:ss} %-5level [%-21thread][%X{traceId}] %logger{36} %line - %msg%n"/>
springProperty标签:
<!-- 也是简单的设置属性名和属性值的对应关系,只不过对应的属性值可以从配置文件中读取 -->
<!-- name代表属性名称, source代表读取配置文件属性名称 defaultValue代表如果没有从配置文件中读取到值的话,就采用默认值填充-->
<springProperty scope="context" name="log.path" source="log.path"
defaultValue="logs"/>
appender标签:
<!-- ConsoleAppender:把日志打印到控制台 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder 默认配置为PatternLayoutEncoder -->
<encoder>
<!-- 输出的日志格式,引用前面property定义的输出格式 -->
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- RollingFileAppender 滚动的打印日志信息 -->
<appender name="error_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--通过SizeAndTimeBasedRollingPolicy执行策略,按大小|时间周期将日志文本文件以[日期.i.log]的方式进行存储-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件名称格式 -->
<FileNamePattern>${log.path}/error.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--最长的日志记录周期 -->
<MaxHistory>60</MaxHistory>
<!--最大的单日志文件的大小 -->
<maxFileSize>100MB</maxFileSize>
<!--日志文件总大小 -->
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
<encoder>
<!-- 输出的日志格式,引用前面property定义的输出格式 -->
<pattern>${log.pattern}</pattern>
</encoder>
<!--过滤器 将会过滤掉除ERROR级别以外的日志信息-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<!-- onMatch表示匹配大于这个级别的日志 ACCEPT–打印 -->
<onMatch>ACCEPT</onMatch>
<!-- onMismatch表示匹配小于于这个级别的日志 DENY– 不打印 -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
logger标签:
<!-- 类路径 日志级别-->
<logger name="org.springframework.web.servlet.DispatcherServlet" level="trace"/>
<!-- mybatis sql 日志 包路径 日志级别-->
<logger name="com.zhangsan.core.mapper" level="trace"/>
root标签:
<!--通过append-ref将appender添加到这个root中,把相应的日志输出 -->
<root level="info">
<appender-ref ref="STDOUT"/>
<appender-ref ref="info_log"/>
<appender-ref ref="error_log"/>
</root>