spring boot整合logback和mybatis

2,059 阅读1分钟

1.整合mybatis

在yml中配置

mybatis:
  config-location: classpath:mybatis/mybatis-config.xml
  
 logging:
  config: classpath:logback.xml

mybatis-config

也可以采用yml的方式配置,这不是本片文章的重点,此处就不在赘述

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <settings>
        <!-- 获取数据库自增主键值 -->
        <setting name="useGeneratedKeys" value="true"/>
        <!-- 使用列标签替换列别名 默认:true -->
        <setting name="useColumnLabel" value="true"/>
        <!-- 开启驼峰命名转换 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!--打印SQL语句-->
<!--        <setting name="logImpl" value="STDOUT_LOGGING"/>-->
        <!-- 开启缓存 -->
        <setting name="cacheEnabled" value="true"/>
        <!-- 返回原有数据结构 -->
        <setting name="callSettersOnNulls" value="true"/>
    </settings>
</configuration>

2.整合 logback

blog.csdn.net/wangh92/art…

<?xml version="1.0" encoding="UTF-8"?>

<configuration scan="true" scanPeriod="10 seconds">

	<!-- 彩色日志 -->
	<!-- 彩色日志依赖的渲染类 -->
	<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
	<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
	<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
	<!-- 彩色日志格式 -->
	<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%logger){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
	<!--包名输出缩进对齐-->
	<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
	<contextName>wongH</contextName>

	<!--文件夹在当前项目磁盘根目录-->
	<property name="LOG_PATH" value="/wongH_log" />
	<!--设置系统日志目录-->
	<property name="APPDIR" value="logs" />
	<!--  日志记录器,日期滚动记录
            ERROR 级别
     -->
	<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 正在记录的日志文件的路径及文件名 -->
		<file>${LOG_PATH}/${APPDIR}/wongH_log_error.log</file>
		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 归档的日志文件的路径,例如今天是1992-11-06日志,当前写的日志文件路径为file节点指定,
            可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
            而1992-11-06的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
			<fileNamePattern>${LOG_PATH}/${APPDIR}/error/wongH_log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
			<!-- 除按日志记录之外,还配置了日志文件不能超过10MB,若超过10MB,日志文件会以索引0开始,
            命名日志文件,例如log-error-1992-11-06.0.log -->
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>10MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<!-- 追加方式记录日志 -->
		<append>true</append>
		<!-- 日志文件的格式 -->
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- [%thread] %logger Line:%-3L - %msg%n</pattern>
			<charset>utf-8</charset>
		</encoder>
		<!-- 此日志文件记录error级别的 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>error</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>


	<!-- 日志记录器,日期滚动记录
            WARN  级别
     -->
	<appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 正在记录的日志文件的路径及文件名 -->
		<file>${LOG_PATH}/${APPDIR}/wongH_log_warn.log</file>
		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 归档的日志文件的路径,例如今天1992-11-06日志,当前写的日志文件路径为file节点指定,
            可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
            而1992-11-06的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
			<fileNamePattern>${LOG_PATH}/${APPDIR}/warn/wongH_log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
			<!-- 除按日志记录之外,还配置了日志文件不能超过10MB,若超过10MB,日志文件会以索引0开始,
            命名日志文件,例如log-warn-1992-11-06.0.log -->
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>10MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<!-- 追加方式记录日志 -->
		<append>true</append>
		<!-- 日志文件的格式 -->
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- [%thread] %logger Line:%-3L - %msg%n</pattern>
			<charset>utf-8</charset>
		</encoder>
		<!-- 此日志文件只记录warn级别的 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>warn</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>


	<!-- 日志记录器,日期滚动记录
            INFO  级别
    -->
	<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 正在记录的日志文件的路径及文件名 -->
		<file>${LOG_PATH}/${APPDIR}/wongH_log_info.log</file>
		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 归档的日志文件的路径,例如今天是1992-11-06日志,当前写的日志文件路径为file节点指定,
            可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
            而1992-11-06的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
			<fileNamePattern>${LOG_PATH}/${APPDIR}/info/wongH_log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
			<!-- 除按日志记录之外,还配置了日志文件不能超过10MB,若超过10MB,日志文件会以索引0开始,
            命名日志文件,例如log-info-1992-11-06.0.log -->
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>10MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<!-- 追加方式记录日志 -->
		<append>true</append>
		<!-- 日志文件的格式 -->
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- [%thread] %logger Line:%-3L - %msg%n</pattern>
			<charset>utf-8</charset>
		</encoder>
		<!-- 此日志文件只记录info级别的 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>info</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>


	<!-- 日志记录器,日期滚动记录
            DEBUG  级别
    -->
	<appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- 正在记录的日志文件的路径及文件名 -->
		<file>${LOG_PATH}/${APPDIR}/wongH_log_debug.log</file>
		<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!-- 归档的日志文件的路径,例如今天是1992-11-06日志,当前写的日志文件路径为file节点指定,
            可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。
            而1992-11-06的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
			<fileNamePattern>${LOG_PATH}/${APPDIR}/debug/wongH_log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
			<!-- 除按日志记录之外,还配置了日志文件不能超过10MB,若超过10MB,日志文件会以索引0开始,
            命名日志文件,例如log-debug-1992-11-06.0.log -->
			<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>10MB</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<!-- 追加方式记录日志 -->
		<append>true</append>
		<!-- 日志文件的格式 -->
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- [%thread] %logger Line:%-3L - %msg%n</pattern>
			<charset>utf-8</charset>
		</encoder>
		<!-- 此日志文件只记录debug级别的 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>debug</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
	</appender>

	<!-- ConsoleAppender 控制台输出日志 -->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<!--encoder 默认配置为PatternLayoutEncoder-->
		<encoder>
			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
			<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level -&#45;&#45; [%thread] %logger Line:%-3L - %msg%n</pattern>-->
			<charset>utf-8</charset>
		</encoder>
		<!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>debug</level>
		</filter>
	</appender>


	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>debug</level>
		</filter>
		<encoder>
			<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -%msg%n</pattern>
		</encoder>
	</appender>

	<!--myibatis log configure 和项目的mybatis日志打印同等效果-->
	<logger name="com.apache.ibatis" level="DEBUG"/>
	<logger name="java.sql.Connection" level="DEBUG"/>
	<logger name="java.sql.Statement" level="DEBUG"/>
	<logger name="java.sql.PreparedStatement" level="DEBUG"/>

    
    	<!-- FrameworkServlet日志-->
	<logger name="org.springframework" level="WARN" />

	<!-- mybatis日志打印-->
	<logger name="org.apache.ibatis" level="DEBUG" />
	<logger name="java.sql" level="DEBUG" />

	<!-- 	<logger name="com.zzht.readmeter.db" additivity="true" level="error"/>-->
	<!-- 日志输出级别 -->
	<root level="INFO">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="DEBUG" />
		<appender-ref ref="INFO" />
		<appender-ref ref="ERROR" />
        	<!-- 生产环境将请stdout去掉 -->
		<appender-ref ref="STDOUT" />
	</root>

</configuration>

3.注意

1.在logback中配置了sql打印,则不要在 mybatis-config中配置sql打印,否则在日志中就不会记录sql

如果 控制台频繁打印 autoconfigure的日志,则需要配置 autoconfigure的日志级别为info

配置方式如下

logging:
  level:
    org:
      springframework:
        boot:
          autoconfigure:
            logging: info

logging.level.org.springframework. boot.autoconfigure.logging: info

springboot2的自动装配的日志是debug级别,如果配置了debug级别日志记录,则会自动打印,所以关闭这个的日志打印即可

其实这段日志是springboot2的自动装配日志报告。

springboot2的自动装配的日志是debug级别,如果配置了debug级别日志记录,则会自动打印,所以关闭这个的日志打印即可

其实这段日志是springboot2的自动装配日志报告。

image-20201207231620325