Spring Boot console log 格式自定義方式
新增配置項(xiàng):logging.pattern.console
logging.pattern.console=%date %level [%thread] %logger{10} [%file:%line] - %msg%nspringboot 自定義日志格式輸出application.properties配置
logging.config=classpath:logback-spring.xmllogging.path=C:/opt/logs/logback-spring.xml配置
<?xml version='1.0' encoding='UTF-8'?><!-- 日志級(jí)別從低到高分為TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果設(shè)置為WARN,則低于WARN的信息都不會(huì)輸出 --><!-- scan:當(dāng)此屬性設(shè)置為true時(shí),配置文件如果發(fā)生改變,將會(huì)被重新加載,默認(rèn)值為true --><!-- scanPeriod:設(shè)置監(jiān)測(cè)配置文件是否有修改的時(shí)間間隔,如果沒有給出時(shí)間單位,默認(rèn)單位是毫秒。當(dāng)scan為true時(shí),此屬性生效。默認(rèn)的時(shí)間間隔為1分鐘。 --><!-- debug:當(dāng)此屬性設(shè)置為true時(shí),將打印出logback內(nèi)部日志信息,實(shí)時(shí)查看logback運(yùn)行狀態(tài)。默認(rèn)值為false。 --><configuration scan='true' scanPeriod='10 seconds'> <!--<include resource='org/springframework/boot/logging/logback/base.xml' />--> <contextName>logback</contextName> <!-- name的值是變量的名稱,value的值時(shí)變量定義的值。通過定義的值會(huì)被插入到logger上下文中。定義變量后,可以使“${}”來使用變量。 --> <property name='log.path' value='C:/opt/logs/' /> <!-- 彩色日志 --> <!-- 彩色日志依賴的渲染類 --> <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(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}'/> <!--輸出到控制臺(tái)--> <appender name='CONSOLE' class='ch.qos.logback.core.ConsoleAppender'> <!--此日志appender是為開發(fā)使用,只配置最底級(jí)別,控制臺(tái)輸出的日志級(jí)別是大于或等于此級(jí)別的日志信息--> <filter class='ch.qos.logback.classic.filter.ThresholdFilter'> <level>debug</level> </filter> <encoder> <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> <!-- 設(shè)置字符集 --> <charset>UTF-8</charset> </encoder> </appender> <!--輸出到文件--> <!-- 時(shí)間滾動(dòng)輸出 level為 DEBUG 日志 --> <appender name='DEBUG_FILE' class='ch.qos.logback.core.rolling.RollingFileAppender'> <!-- 正在記錄的日志文件的路徑及文件名 --> <file>${log.path}/log_debug.log</file> <!--日志文件輸出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 設(shè)置字符集 --> </encoder> <!-- 日志記錄器的滾動(dòng)策略,按日期,按大小記錄 --> <rollingPolicy class='ch.qos.logback.core.rolling.TimeBasedRollingPolicy'> <!-- 日志歸檔 --> <fileNamePattern>${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class='ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP'> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文件保留天數(shù)--> <maxHistory>15</maxHistory> </rollingPolicy> <!-- 此日志文件只記錄debug級(jí)別的 --> <filter class='ch.qos.logback.classic.filter.LevelFilter'> <level>debug</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 時(shí)間滾動(dòng)輸出 level為 INFO 日志 --> <appender name='INFO_FILE' class='ch.qos.logback.core.rolling.RollingFileAppender'> <!-- 正在記錄的日志文件的路徑及文件名 --> <file>${log.path}/log_info.log</file> <!--日志文件輸出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> <!-- 日志記錄器的滾動(dòng)策略,按日期,按大小記錄 --> <rollingPolicy class='ch.qos.logback.core.rolling.TimeBasedRollingPolicy'> <!-- 每天日志歸檔路徑以及格式 --> <fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class='ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP'> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文件保留天數(shù)--> <maxHistory>15</maxHistory> </rollingPolicy> <!-- 此日志文件只記錄info級(jí)別的 --> <filter class='ch.qos.logback.classic.filter.LevelFilter'> <level>info</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 時(shí)間滾動(dòng)輸出 level為 WARN 日志 --> <appender name='WARN_FILE' class='ch.qos.logback.core.rolling.RollingFileAppender'> <!-- 正在記錄的日志文件的路徑及文件名 --> <file>${log.path}/log_warn.log</file> <!--日志文件輸出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 --> </encoder> <!-- 日志記錄器的滾動(dòng)策略,按日期,按大小記錄 --> <rollingPolicy class='ch.qos.logback.core.rolling.TimeBasedRollingPolicy'> <fileNamePattern>${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class='ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP'> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文件保留天數(shù)--> <maxHistory>15</maxHistory> </rollingPolicy> <!-- 此日志文件只記錄warn級(jí)別的 --> <filter class='ch.qos.logback.classic.filter.LevelFilter'> <level>warn</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 時(shí)間滾動(dòng)輸出 level為 ERROR 日志 --> <appender name='ERROR_FILE' class='ch.qos.logback.core.rolling.RollingFileAppender'> <!-- 正在記錄的日志文件的路徑及文件名 --> <file>${log.path}/log_error.log</file> <!--日志文件輸出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 此處設(shè)置字符集 --> </encoder> <!-- 日志記錄器的滾動(dòng)策略,按日期,按大小記錄 --> <rollingPolicy class='ch.qos.logback.core.rolling.TimeBasedRollingPolicy'> <fileNamePattern>${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class='ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP'> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文件保留天數(shù)--> <maxHistory>15</maxHistory> </rollingPolicy> <!-- 此日志文件只記錄ERROR級(jí)別的 --> <filter class='ch.qos.logback.classic.filter.LevelFilter'> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- <logger>用來設(shè)置某一個(gè)包或者具體的某一個(gè)類的日志打印級(jí)別、 以及指定<appender>。<logger>僅有一個(gè)name屬性, 一個(gè)可選的level和一個(gè)可選的addtivity屬性。 name:用來指定受此logger約束的某一個(gè)包或者具體的某一個(gè)類。 level:用來設(shè)置打印級(jí)別,大小寫無關(guān):TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 還有一個(gè)特俗值INHERITED或者同義詞NULL,代表強(qiáng)制執(zhí)行上級(jí)的級(jí)別。 如果未設(shè)置此屬性,那么當(dāng)前l(fā)ogger將會(huì)繼承上級(jí)的級(jí)別。 addtivity:是否向上級(jí)logger傳遞打印信息。默認(rèn)是true。 --> <!--<logger name='org.springframework.web' level='info'/>--> <!--<logger name='org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor' level='INFO'/>--> <!-- 使用mybatis的時(shí)候,sql語句是debug下才會(huì)打印,而這里我們只配置了info,所以想要查看sql語句的話,有以下兩種操作: 第一種把<root level='info'>改成<root level='DEBUG'>這樣就會(huì)打印sql,不過這樣日志那邊會(huì)出現(xiàn)很多其他消息 第二種就是單獨(dú)給dao下目錄配置debug模式,代碼如下,這樣配置sql語句會(huì)打印,其他還是正常info級(jí)別: --> <!-- root節(jié)點(diǎn)是必選節(jié)點(diǎn),用來指定最基礎(chǔ)的日志輸出級(jí)別,只有一個(gè)level屬性 level:用來設(shè)置打印級(jí)別,大小寫無關(guān):TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 不能設(shè)置為INHERITED或者同義詞NULL。默認(rèn)是DEBUG 可以包含零個(gè)或多個(gè)元素,標(biāo)識(shí)這個(gè)appender將會(huì)添加到這個(gè)logger。 --> <!--開發(fā)環(huán)境:打印控制臺(tái)--> <logger name='cn.zszhan.forum' level='debug'/> <root level='info'> <appender-ref ref='CONSOLE' /> <appender-ref ref='DEBUG_FILE' /> <appender-ref ref='INFO_FILE' /> <appender-ref ref='WARN_FILE' /> <appender-ref ref='ERROR_FILE' /> </root> <!--生產(chǎn)環(huán)境:輸出到文件--> <!--<springProfile name='pro'>--> <!--<root level='info'>--> <!--<appender-ref ref='CONSOLE' />--> <!--<appender-ref ref='DEBUG_FILE' />--> <!--<appender-ref ref='INFO_FILE' />--> <!--<appender-ref ref='ERROR_FILE' />--> <!--<appender-ref ref='WARN_FILE' />--> <!--</root>--> <!--</springProfile>--> </configuration>
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. React+umi+typeScript創(chuàng)建項(xiàng)目的過程2. ASP調(diào)用WebService轉(zhuǎn)化成JSON數(shù)據(jù),附j(luò)son.min.asp3. php測(cè)試程序運(yùn)行速度和頁面執(zhí)行速度的代碼4. php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究5. ASP.NET Core 5.0中的Host.CreateDefaultBuilder執(zhí)行過程解析6. 無線標(biāo)記語言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)第1/2頁7. Warning: require(): open_basedir restriction in effect,目錄配置open_basedir報(bào)錯(cuò)問題分析8. ASP中常用的22個(gè)FSO文件操作函數(shù)整理9. SharePoint Server 2019新特性介紹10. 三個(gè)不常見的 HTML5 實(shí)用新特性簡(jiǎn)介
