logback+spring实践
Spring Boot配置log手册
配置文件名称使用:logback-spring.xml
如果使用logback.xml,会在springBoot启动之前就完成logback的配置加载, 造成springBoot不能完全控制log行为
配置user.home是jvm传过来的系统参数,可以直接使用
<property name="LOG_PATH" value="${user.home}/${APP_NAME}/logs" />
配置自定义的属性,使用slf4j的MDC功能
<appender>中如果提供<file>标签, 则生成的最新文件名没有后缀, 切片后的有后缀
<logger> 的属性additivity="false"设置之后,此logger和root无关
自动刷新log级别,可以在<configuration>中配置,也可以自己通过controller来改变。 使用spring actual管理,spring环境下不会自动刷新
限制log file的大小, 不然占用磁盘会很大
logging.pattern.rolling-file-name 如果fileName以gz结尾,则会自动压缩
在不同的profile.properties中指定相应环境的logger级别配置, 创建多个logback-spring-xxx.xml文件, 这样不需要线上发布再改logger级别, 各环境配置比较清晰
org/springframework/boot/logging/logback/defaults.xml 配置了控制台显示时颜色转换器, 打印到文件时没有颜色,class长度也更长
原理:
日志框架冲突
config example
logback-spring.xml, 其他logging.level可以在application.properties
中完成
<configuration>
<!-- https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.logging.custom-log-configuration -->
<!-- spring-boot-2.3.7.RELEASE.jar -->
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<!-- /etc/filebeat/conf.d/logagent_app.yml EXCLUDE this SQL LOG FILE -->
<appender name="SQL-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>log/dxs-sql.txt</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<cleanHistoryOnStart>false</cleanHistoryOnStart>
<fileNamePattern>log/dxs-sql.%d{yyyy-MM-dd}.%i.txt.gz</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>7</maxHistory>
<totalSizeCap>0</totalSizeCap>
</rollingPolicy>
</appender>
<logger name="com.xxx.mapper" level="DEBUG" additivity="false">
<appender-ref ref="SQL-FILE"/>
<appender-ref ref="CONSOLE"/>
</logger>
</configuration>
@@@build beautiful things, share happiness@@@