<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <!--2、设置上下文名称 每个logger都关联到logger上下文,默认上下文名称为“default”。但可以使用设置成其他名字,用于区分不同应用程序的记录。 一旦设置,不能修改,可以通过 %contextName 来打印日志上下文名称,一般来说我们不用这个属性,可有可无。 --> <!--<contextName>cool_is_life</contextName> --> <!--3、设置变量 用来定义变量值的标签, 有两个属性,name和value;其中name的值是变量的名称,value的值时变量定义的值。 通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 --> <!--<property name="log.path" value="/logs/logback.log" /> --> <!--<property name="log.path" value="/logs/logback" /> --> <property name="logback.logdir" value="../" /> <property name="logback.appname" value="8timer-api" /> <!--4、appender用来格式化日志输出节点,有俩个属性name和class,class用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略。 控制台输出 ConsoleAppender 输出到文件 RollingFileAppender --> <!--输出到控制台 --> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <!--输出到文件 --> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--如果只是想要 Info 级别的日志,只是过滤 info 还是会输出 Error 日志,因为 Error 的级别高,所以我们使用下面的策略,可以避免输出 Error 的日志 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <!--过滤 Error --> <level>ERROR</level> <!--匹配到就禁止 --> <onMatch>DENY</onMatch> <!--没有匹配到就允许 --> <onMismatch>ACCEPT</onMismatch> </filter> <!--日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则,如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天 的日志改名为今天的日期。即,<File> 的日志都是当天的。 --> <file>${logback.logdir}/${logback.appname}.info.log</file> <!--滚动策略,按照时间滚动 TimeBasedRollingPolicy --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间 --> <FileNamePattern>${logback.logdir}/bak/${logback.appname}.info.%d{yyyy-MM-dd}.%i.log </FileNamePattern> <!--只保留最近7天的日志 --> <maxHistory>7</maxHistory> <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志 --> <totalSizeCap>1GB</totalSizeCap> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger - %msg%n</pattern> </encoder> </appender> <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--如果只是想要 Error 级别的日志,那么需要过滤一下,默认是 info 级别的,ThresholdFilter --> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>error</level> </filter> <!--日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则 如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天 的日志改名为今天的日期。即,<File> 的日志都是当天的。 --> <File>${logback.logdir}/${logback.appname}.error.log</File> <!--滚动策略,按照时间滚动 TimeBasedRollingPolicy --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间 --> <FileNamePattern>${logback.logdir}/bak/${logback.appname}.error.%d{yyyy-MM-dd}.%i.log </FileNamePattern> <!--只保留最近7天的日志 --> <maxHistory>7</maxHistory> <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志 --> <!--<totalSizeCap>1GB</totalSizeCap> --> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <!--日志输出编码格式化 --> <encoder> <charset>UTF-8</charset> <pattern>%d [%thread] %-5level %logger{36} %line - %msg%n</pattern> </encoder> </appender> <!--1、root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性。 level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为INHERITED或者同义词NULL。 默认是DEBUG。 可以包含零个或多个元素,标识这个appender将会添加到这个loger。 --> <root level="INFO"> <appender-ref ref="console" /> <appender-ref ref="file" /> <appender-ref ref="fileErrorLog" /> </root> </configuration>