最近項目,由於測試提出需要將日志按天滾動日志,所以用了logback,日志打印工具。
但是由於使用了mybatis-config.xml 一直不打印SQL。最后將
<setting name="logImpl" value="STDOUT_LOGGING" />
這行注釋,並且在application.properties里添加
logging.level.com.**.**.**.schedule.mapper=DEBUG
就可以了,以下是完整的配置。
mybatis-config.xml:
<?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> <properties> <property name="dialect" value="mysql"/> </properties> <settings> <!-- 開啟駝峰匹配 --> <setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 這個配置使全局的映射器啟用或禁用緩存。系統默認值是true,設置只是為了展示出來 --> <setting name="cacheEnabled" value="true"/> <!-- 全局啟用或禁用延遲加載。當禁用時,所有關聯對象都會即時加載。 系統默認值是true,設置只是為了展示出來 --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 允許或不允許多種結果集從一個單獨的語句中返回(需要適合的驅動)。 系統默認值是true,設置只是為了展示出來 --> <setting name="multipleResultSetsEnabled" value="true"/> <!--使用列標簽代替列名。不同的驅動在這方便表現不同。參考驅動文檔或充分測試兩種方法來決定所使用的驅動。 系統默認值是true,設置只是為了展示出來 --> <setting name="useColumnLabel" value="true"/> <!--允許 JDBC 支持生成的鍵。需要適合的驅動。如果設置為 true 則這個設置強制生成的鍵被使用,盡管一些驅動拒絕兼容但仍然有效(比如 Derby)。 系統默認值是false,設置只是為了展示出來 --> <setting name="useGeneratedKeys" value="false"/> <!--配置默認的執行器。SIMPLE 執行器沒有什么特別之處。REUSE 執行器重用預處理語句。BATCH 執行器重用語句和批量更新 系統默認值是SIMPLE,設置只是為了展示出來 --> <setting name="defaultExecutorType" value="SIMPLE"/> <!--設置超時時間,它決定驅動等待一個數據庫響應的時間。 系統默認值是null,設置只是為了展示出來 --> <setting name="defaultStatementTimeout" value="25000"/> <setting name="callSettersOnNulls" value="true"/> <!-- 返回空字段 --> <!-- 打印查詢語句 --> <!-- <setting name="logImpl" value="STDOUT_LOGGING" />--> </settings> <!-- 分頁助手 --> <plugins> <plugin interceptor="com.github.pagehelper.PageHelper"> <!-- 數據庫方言 --> <property name="dialect" value="mysql" /> <property name="offsetAsPageNum" value="true" /> <!-- 設置為true時,使用RowBounds分頁會進行count查詢 會去查詢出總數 --> <property name="rowBoundsWithCount" value="true" /> <property name="pageSizeZero" value="true" /> <property name="reasonable" value="true" /> </plugin> </plugins> </configuration>
logback相關:
logback.xml:
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="30 seconds" debug="true"> <property file ="../config/logback/logback.properties" /> <include file="../config/logback/logback-prod.xml"/> <root level="INFO"> <appender-ref ref="ASYNC_ROLLING_INFO" /> <appender-ref ref="ASYNC_ROLLING_DEBUG" /> <appender-ref ref="ASYNC_ROLLING_WARN" /> <appender-ref ref="ASYNC_ROLLING_ERROR" /> </root> </configuration>
logback-prod.xml:
<?xml version="1.0" encoding="UTF-8"?> <included> <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${info.file.path}</file> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>../log/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 100MB --> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>${log.pattern}</pattern> </encoder> </appender> <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${debug.file.path}</file> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>DEBUG</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>${base.path}/debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 100MB --> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>${log.pattern}</pattern> </encoder> </appender> <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${error.file.path}</file> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>${base.path}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 100MB --> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>${log.pattern}</pattern> </encoder> </appender> <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${warn.file.path}</file> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>${base.path}/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 100MB --> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder>R <pattern>${log.pattern}</pattern> </encoder> </appender> <appender name="sql" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${sql.file.path}</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${base.path}/sql.%d{yyyy-MM-dd}.%i.log</FileNamePattern> <MaxHistory>30</MaxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 100MB --> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>[%d{yyyy-MM-dd HH:mm:ss} [%t] [%X{traceId}] %5p %c:%L] %m%n</pattern> </encoder> </appender> <logger name="com.**.**.**.schedule.mapper" level="DEBUG" additivity="false"> <appender-ref ref="sql" /> </logger> <logger name="org.mybatis" level="DEBUG" additivity="false" > <appender-ref ref="sql" /> </logger> <appender name="ASYNC_ROLLING_INFO" class="ch.qos.logback.classic.AsyncAppender"> <appender-ref ref="INFO" /> </appender> <appender name="ASYNC_ROLLING_DEBUG" class="ch.qos.logback.classic.AsyncAppender"> <appender-ref ref="DEBUG" /> </appender> <appender name="ASYNC_ROLLING_WARN" class="ch.qos.logback.classic.AsyncAppender"> <appender-ref ref="WARN" /> </appender> <appender name="ASYNC_ROLLING_ERROR" class="ch.qos.logback.classic.AsyncAppender"> <appender-ref ref="ERROR" /> </appender> </included>
logback.properties
log.pattern = [%date{ISO8601}] [%-5level] [%X{requestId}] [%X{rocketmqId}] [%logger] - %msg %rootException %n log.level.pattern = [%date{ISO8601}] [%-5level] [%X{requestId}] [%X{rocketmqId}] [%logger] - %msg %rootException %n info.file.path = ../log/info.log debug.file.path = ../log/debug.log error.file.path = ../log/error.log sum.file.path = ../log/sum.log warn.file.path = ../log/warn.log sql.file.path = ../log/sql.log base.path=../log
文章為原創
謝謝觀看