国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【LogBack日志】打印mybatis中sql日志并存放到指定文件中

這篇具有很好參考價值的文章主要介紹了【LogBack日志】打印mybatis中sql日志并存放到指定文件中。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言:

在springboot中使用logbac-spring.xml單獨打印mybaits中的sql,另存一個單獨的日志中。

1、yml配置

# 日志配置
logging:
  level:
    com.xxxx.mapper: debug
    org.springframework: warn
  config: classpath:logback-app.xml
  file:
    path: ./logs/app

2、logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property resource="application.yml"/>
    <!-- 日志文件存放路徑 -->
    <springProperty scope="context" name="FILE_PATH" source="logging.file.path"/>
    <!-- 文件輸出格式 -->
    <!-- 1格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息,%n是換行符-->
    <property name="FILE_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:  %msg%n"/>
    <!-- 日志最大保存數(shù)量 -->
    <property name="MAX_HISTORY" value="10"/>
    <!-- 日志文件大小 -->
    <property name="FILE_SIZE" value="10MB"/>

    <!-- info文件,記錄info級別日志 -->
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 實時輸出的日志文件 -->
        <file>${FILE_PATH}/sys-info.log</file>
        <append>true</append>
        <!-- 歷史日志分塊,配置滾動的策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志名稱的格式 -->
            <fileNamePattern>${FILE_PATH}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 保存的最長時間:天數(shù) -->
            <MaxHistory>${MAX_HISTORY}</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${FILE_PATTERN}</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>${FILE_SIZE}</MaxFileSize>
        </triggeringPolicy>
        <!-- 過濾掉非info的日志,即此日志文件中只會輸出info日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 過濾的級別 -->
            <level>INFO</level>
            <!-- 匹配時的操作:接收(記錄) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配時的操作:拒絕(不記錄) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- error文件,記錄error級別日志 -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 實時輸出的日志文件 -->
        <file>${FILE_PATH}/sys-error.log</file>
        <append>true</append>
        <!-- 歷史日志分塊,配置滾動的策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志名稱的格式 -->
            <fileNamePattern>${FILE_PATH}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 保存的最長時間:天數(shù) -->
            <MaxHistory>${MAX_HISTORY}</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${FILE_PATTERN}</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>${FILE_SIZE}</MaxFileSize>
        </triggeringPolicy>
        <!-- 過濾掉非error的日志,即此日志文件中只會輸出error日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 過濾的級別 -->
            <level>ERROR</level>
            <!-- 匹配時的操作:接收(記錄) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配時的操作:拒絕(不記錄) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- debug文件,記錄debug級別日志 -->
    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 實時輸出的日志文件 -->
        <file>${FILE_PATH}/sys-debug.log</file>
        <append>true</append>
        <!-- 歷史日志分塊,配置滾動的策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志名稱的格式 -->
            <fileNamePattern>${FILE_PATH}/sys-debug.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 保存的最長時間:天數(shù) -->
            <MaxHistory>${MAX_HISTORY}</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${FILE_PATTERN}</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>${FILE_SIZE}</MaxFileSize>
        </triggeringPolicy>
        <!-- 過濾掉非debug的日志,即此日志文件中只會輸出debug日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 過濾的級別 -->
            <level>DEBUG</level>
            <!-- 匹配時的操作:接收(記錄) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配時的操作:拒絕(不記錄) -->
            <onMismatch>DENY</onMismatch>>
        </filter>
    </appender>

    <!-- sql文件,記錄DEBUG級別日志 -->
    <appender name="SQL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 實時輸出的日志文件 -->
        <file>${FILE_PATH}/sys-sql.log</file>
        <append>true</append>
        <!-- 歷史日志分塊,配置滾動的策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志名稱的格式 -->
            <fileNamePattern>${FILE_PATH}/sys-sql.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 保存的最長時間:天數(shù) -->
            <MaxHistory>${MAX_HISTORY}</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${FILE_PATTERN}</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>${FILE_SIZE}</MaxFileSize>
        </triggeringPolicy>
        <!-- 過濾掉非debug的日志,即此日志文件中只會輸出debug日志 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 過濾的級別 -->
            <level>DEBUG</level>
            <!-- 匹配時的操作:接收(記錄) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配時的操作:拒絕(不記錄) -->
            <onMismatch>DENY</onMismatch>>
        </filter>
    </appender>

    <!-- 控制臺輸出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${FILE_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- 打印 Spring 在啟動的時候初始化各個 Bean 的信息 -->
    <logger name="org.springframework" level="WARN"/>

    <!--mybatis日志 mapper包所在路徑-->
    <logger name="com.xxx.mapper" level="DEBUG" additivity="false">
        <appender-ref ref="SQL_FILE" />
        <appender-ref ref="STDOUT" />
    </logger>

    <!-- 相當(dāng)于logger元素,只是name值已經(jīng)確定為root了 -->
    <root level="INFO">
        <appender-ref ref="INFO_FILE" />
        <appender-ref ref="ERROR_FILE" />
        <appender-ref ref="DEBUG_FILE" />
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

3、關(guān)鍵幾點

幾個關(guān)鍵點

a. 文件名需要為??logback-spring.xml??; 動態(tài)日志路徑才會生效; 屬性文件中配置 ??log.path=xxx??;

【Log日志】logback.xml動態(tài)配置屬性值(包括接入的第三方配置)

b. levle 需要是DEBUG等級; 因為sql日志是DEBUG等級的;name= 存放mapper文件的包路徑

<!--mybatis日志 mapper包所在路徑-->
    <logger name="com.xxx.mapper" level="DEBUG" additivity="false">
        <appender-ref ref="SQL_FILE" />
        <appender-ref ref="STDOUT" />
    </logger>

c. mybatis的log-impl需要配置正確的實現(xiàn)類 比如 在maybatis-plus中

# MyBatis配置
mybatis:
  # 搜索指定包別名
  typeAliasesPackage: com.xxx.**.domain
  # 配置mapper的掃描,找到所有的mapper.xml映射文件
  mapperLocations: classpath*:mapper/**/*Mapper.xml
  configuration:
    # 指定 MyBatis 所用日志的具體實現(xiàn)
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
    # 開啟自動下劃線格式轉(zhuǎn)駝峰格式
    map-underscore-to-camel-case: true
    # 全局映射器啟用緩存
    cache-enabled: true
    # 允許 JDBC 支持自動生成主鍵
    use-generated-keys: true
    # 執(zhí)行模式。默認(rèn)是 SIMPLE
    default-executor-type: reuse
    # 允許查詢結(jié)果為null
    call-setters-on-nulls: true

d. 我之前就是一直配置的是 ??log-impl: org.apache.ibatis.logging.stdout.StdOutImpl?? ;導(dǎo)致文件只能出現(xiàn)在控制臺;卻沒有打印到文件中;

參數(shù)值的默認(rèn)值設(shè)置
如果配置文件沒有設(shè)置屬性. 可以在使用的地方設(shè)置默認(rèn)值 例如???${log.path:-默認(rèn)值}?

參考資料:
https://blog.51cto.com/szzdzhp/5300674
https://blog.csdn.net/happyxin_/article/details/128844723?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-2-128844723-blog-116700232.235%5Ev28%5Epc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-2-128844723-blog-116700232.235%5Ev28%5Epc_relevant_default&utm_relevant_index=3
https://blog.csdn.net/DreamMryang/article/details/115351202文章來源地址http://www.zghlxwxcb.cn/news/detail-412347.html

到了這里,關(guān)于【LogBack日志】打印mybatis中sql日志并存放到指定文件中的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • springboot 下mybatis-plus 如何打印sql日志和參數(shù)到日志文件

    網(wǎng)上很多說法打印sql日志的方法在application.properties配置文件中 但是上述配置只能將sql日志打印到控制臺,無法打印到日志文件中 參考下面這個文檔,將sql日志打印到日志文件中 https://www.ius7.com/a/305 1:設(shè)置mybatisplus包下的日志級別為DEBUG; 2:設(shè)置項目mapper目錄的日志級別為DE

    2024年02月14日
    瀏覽(19)
  • mybatis打印sql日志

    我們?nèi)粘2僮鲾?shù)據(jù)庫的過程一般都是使用mybatis中執(zhí)行sql操作,有時候為了確認(rèn)mybatis拼接的sql是否正確,就需要在日志中打印出具體的sql語句,對應(yīng)的入?yún)⒁约皵?shù)據(jù)庫的返回值 一.sql日志輸出到控制臺,修改mybatis-config文件,指定如下配置: 二.sql日志輸出到文件,修改mybatis

    2024年02月15日
    瀏覽(19)
  • Mybatis設(shè)置sql打印日志

    第一種:使用 mybatis 自帶的打印 第二種:使用 log4j 日志打印 備注:log4j 運行級別調(diào)到DEBUG,可以在控制臺打印出mybatis運行的sql語句。 #將等級為DEBUG的日悲信慮出到console和file這網(wǎng)個日的地,console和file的定義在下面的代碼 log4j.rootLogger=DEBUG,console,file #控制臺輸出的相關(guān)設(shè)置

    2024年02月06日
    瀏覽(17)
  • Mybatis-Plus 打印sql日志

    先說一下springboot 和mybatis-plus版本 再給一份logback.xml文件配置 配置打印日志的兩種方式 控制臺打印,很簡單,在application.yml配置 日志文件打印,在application.yml配置 還需要再logback.xml中將mapper 包的logger日志級別設(shè)置為debug,看上方 有用的話,幫忙點贊,謝謝,如果因為版本問

    2024年02月15日
    瀏覽(26)
  • MyBatis實戰(zhàn):如何將拼接的SQL打印到日志

    哈嘍,大家好,我是木頭左! 在日常開發(fā)中,經(jīng)常會遇到拼接SQL的情況,這時候,如何將拼接的SQL打印到日志,以便追蹤和調(diào)試呢?本文將詳細(xì)介紹MyBatis如何實現(xiàn)這一功能。 MyBatis是一個優(yōu)秀的持久層框架,它支持定制化SQL、存儲過程以及高級映射。MyBatis避免了幾乎所有的

    2024年04月11日
    瀏覽(17)
  • 【Mybatis小白從0到90%精講】15: Mybatis配置打印SQL日志

    【Mybatis小白從0到90%精講】15: Mybatis配置打印SQL日志

    日志(Log)是每個程序都不可或缺的一部分,它可以幫助開發(fā)人員診斷和調(diào)試問題。Mybatis,作為一款備受贊譽的ORM框架,自然也提供了強大的日志功能。 它不僅提供了 內(nèi)置的標(biāo)準(zhǔn)實現(xiàn) ,還支持 集成各種主流的日志框架 ,讓我們可以輕松地 查看最終執(zhí)行的SQL語句 ,這在進(jìn)行數(shù)

    2024年02月05日
    瀏覽(22)
  • Logback日志記錄只在控制臺輸出sql,未寫入日志文件【解決】

    Logback日志記錄只在控制臺輸出sql,未寫入日志文件【解決】

    原因:持久層框架對于Log接口實現(xiàn)方式不一樣,日記記錄的位置及展示方式也也不一樣 可以分別配置到兩個環(huán)境中,dev用StdOutImpl,prod用Slf4jImpl或者其他的都行,具體需要看他是如何實現(xiàn)的,使用logger對象輸出的都是會寫入日志的,使用System.out或err的只會在控制臺顯示,以下是實驗

    2024年02月09日
    瀏覽(95)
  • log4j--動態(tài)打印日志文件到指定文件夾

    log4j--動態(tài)打印日志文件到指定文件夾

    1、添加Maven依賴 2、配置文件 log4j.properties 3、編寫日志打印工具類 LogUtil 4、工具類調(diào)用 測試結(jié)果:

    2024年02月16日
    瀏覽(15)
  • MyBatis的#{}和${}:安全與靈活并存的SQL之道

    MyBatis的#{}和${}:安全與靈活并存的SQL之道

    MyBatis是一款廣泛使用的Java持久化框架,提供了強大的SQL映射和數(shù)據(jù)庫操作功能。在編寫MyBatis的SQL語句時,我們經(jīng)常會遇到#{}和${}兩種不同的占位符語法。本文將詳細(xì)解析#{}和${}的區(qū)別以及它們在MyBatis中的應(yīng)用場景,幫助開發(fā)者更好地理解和使用MyBatis。 #{} 安全的預(yù)編譯占位

    2024年04月08日
    瀏覽(20)
  • SpringBoot項目從0到1配置logback日志打印

    SpringBoot項目從0到1配置logback日志打印

    大家好!我是sum墨,一個一線的底層碼農(nóng),平時喜歡研究和思考一些技術(shù)相關(guān)的問題并整理成文,限于本人水平,如果文章和代碼有表述不當(dāng)之處,還請不吝賜教。 以下是正文! 我們在寫后端項目的時候,日志打印是必需的。支持SpringBoot項目的日志框架一般有l(wèi)og4j、logback,

    2024年02月11日
    瀏覽(34)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包