<springProperty scope="context" name="attr.value" source="spring.attr.value" defaultValue="default"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender>
<appender name="XXX_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${logging.path}/xxx.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${logging.path}/xxx-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxFileSize>100MB</maxFileSize> <maxHistory>30</maxHistory> <totalSizeCap>10GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender>
<springProfile name="prod,release"> <logger name="com.xxx"/> <logger name="com.xxx.xxx" level="WARN" additivity="false"> <appender-ref ref="TIMER_APPENDER"/> <appender-ref ref="STDOUT"/> </logger> </springProfile>
定义一个日志执行者,用来设置某一个包或者具体的某一个类的日志打印级别、以及指定 appender-ref
在实际项目中有很多情况下需要区分业务模块来写入不同的日志文件,而不是随着其他日志混为一谈,尤其是日志具有价值的时候,例如埋点日志,如果都写在同一个文件里面,那么可读性很差,所以需要把日志区分出来。
举例说明,例如想把数据的sql日志统一写道一个日志文件中:
<appender name="DATABASE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/db.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/db-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxFileSize>100MB</maxFileSize> <maxHistory>60</maxHistory> <totalSizeCap>20GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <!-- 然后还需要再looger里面引用 --> <springProfile name="release"> <logger name="xxx.mapper" level="DEBUG" additivity="false"> <appender-ref ref="DATABASE"/> </logger> </springProfile>
root 其实也是一个logger, 只不过是根级的logger, 也就是任意包都会执行,也就是如果不配置logger的时候,全部日志默认都会走他,或者在logger不配置appender-ref的时候,会继承root的appender-ref。