项目当中经常会记录日志,以便于问题排查
1、lockback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" status="warn">
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<springProperty scope="context" name="env" source="mida.active"/>
<!--每个程序必须修改以下 程序名称 -->
<property name="appName" value="projectLog"/>
<property name="appCode" value="BMS004"/>
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] appCode=[${appCode}] appName=[${appName}] traceId=[%X{traceId}] %5p [%t] %replace(%caller{1}){'\t|Caller.{1}0|\r\n', ''} - %m%n
</Pattern>
</encoder>
</appender>
<appender name="RollingFileDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] appCode=[${appCode}] appName=${appName} traceId=[%X{traceId}] %5p [%t] %replace(%caller{1}){'\t|Caller.{1}0|\r\n', ''} - %m%n
</pattern>
</encoder>
<file>./logs/${appName}/debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>./logs/${appName}/debug.%i</fileNamePattern>
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>20MB</MaxFileSize>
</triggeringPolicy>
</appender>
<appender name="RollingFileInfo" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] appCode=[${appCode}] appName=[%X{appName}] traceId=[%X{traceId}] %5p [%t] %replace(%caller{1}){'\t|Caller.{1}0|\r\n', ''} - %m%n
</pattern>
</encoder>
<file>./logs/${appName}/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>./logs/${appName}/info.%i</fileNamePattern>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>20MB</MaxFileSize>
</triggeringPolicy>
<!-- 下面为配置只输出INFO级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="RollingFileWarn" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] appCode=[${appCode}] appName=[%X{appName}] traceId=[%X{traceId}] %5p [%t] %replace(%caller{1}){'\t|Caller.{1}0|\r\n', ''} - %m%n
</pattern>
</encoder>
<file>./logs/${appName}/warn.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>./logs/${appName}/warn.%i</fileNamePattern>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>20MB</MaxFileSize>
</triggeringPolicy>
<!-- 下面为配置只输出WARN级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="RollingFileError" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] appCode=[${appCode}] appName=[%X{appName}] [%X{traceId}] %5p [%t] %replace(%caller{1}){'\t|Caller.{1}0|\r\n', ''} - %m%n
</pattern>
</encoder>
<file>./logs/${appName}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>./logs/${appName}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- <fileNamePattern>./logs/${appName}/error.%i</fileNamePattern>-->
</rollingPolicy>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>20MB</MaxFileSize>
</triggeringPolicy>
<!-- 下面为配置只输出error级别的日志 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<logger name="org.springframework" level="WARN"/>
<logger name="org.mybatis.spring" level="WARN"/>
<logger name="org.apache.shiro" level="WARN"/>
<logger name="org.hibernate.validator" level="WARN"/>
<logger name="org.apache.zookeeper" level="ERROR"/>
<root level="info">
<appender-ref ref="Console"/>
<appender-ref ref="RollingFileInfo"/>
<appender-ref ref="RollingFileDebug"/>
<appender-ref ref="RollingFileWarn"/>
<appender-ref ref="RollingFileError"/>
</root>
<jmxConfigurator/>
</configuration>
2、日志文件可以结合aop统一日志处理
SpringBoot的统一日志记录
log.debug、log.info、log.error会输出到对应的日志文件中。
3、如果在想要将sql记录到日志中需要如下配置
- 此配置会将sql输出到日志中,sql并不会在控制台中输出
logging:
level:
com.XXX.mapper: debug
- 此配置会将sql和结果输出到控制台中,sql并不会输出到日志中。
mybatis-plus:
# 配置MyBatis日志
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
控制台sql和结果
- 此配置会将sql输出到日志和控制台中(输出的只有sql并没有返回的结果)
logging:
level:
com.XXX.mapper: debug
mybatis-plus:
# 配置MyBatis日志
configuration:
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl


springboot Druid中使用log4j2进行日志输出
SpringBoot环境日志配置,logback配置(支持mybatis、mybatis-plus生成的SQL语句打印)
版权声明:本文为weixin_43811057原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。