濰坊網(wǎng)站優(yōu)化sem和seo是什么意思
什么是logback
logback 繼承自 log4j,它建立在有十年工業(yè)經(jīng)驗(yàn)的日志系統(tǒng)之上。它比其它所有的日志系統(tǒng)更快并且更小,包含了許多獨(dú)特并且有用的特性。
logback.xml
首先直接上配置,我在項(xiàng)目過(guò)程中發(fā)現(xiàn)一些同時(shí)遇到需要logback文件的時(shí)候就去其他項(xiàng)目copy一個(gè),改吧改吧名字就直接完事。完全不了解其中標(biāo)簽的含義以及需要單獨(dú)將日志打入一個(gè)文件怎么使用都不清楚,如果你需要一個(gè)logback可以把底下的copy走,但是我建議看看后續(xù)的標(biāo)簽含義。
<?xml version="1.0" encoding="UTF-8"?>
<!-- 每隔20S掃描1次配置文件,如果配置文件被修改自動(dòng)加載 -->
<configuration scan="true" scanPeriod="20 seconds"><!-- Windows操作系統(tǒng) --><if condition='property("os.name").contains("Windows")'><then><property name="LOG_FILE_ROOT" value="D://opt/applog/logs"/><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread][%logger.java:%line] - %msg%n</pattern></encoder></appender></then></if><!-- MAC操作系統(tǒng) --><if condition='property("os.name").toUpperCase().contains("MAC")'><then><property name="LOG_FILE_ROOT" value=".log/logs" /><!-- 控制臺(tái)輸出 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread][%logger.java:%line] - %msg%n</pattern></encoder></appender></then></if><!-- Linux操作系統(tǒng) --><if condition='property("os.name").contains("Linux")'><then><property name="LOG_FILE_ROOT" value="/opt/applog/-logs"/><!-- 控制臺(tái)輸出 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread][%logger.java:%line] - %msg%n</pattern></encoder></appender></then></if><springProfile name="dev"><appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_FILE_ROOT}/web-debug.log</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.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE_ROOT}/web-debug-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern><maxFileSize>100MB</maxFileSize><maxHistory>7</maxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread][%logger.java:%line] - %msg%n</pattern></encoder></appender></springProfile><!-- 時(shí)間滾動(dòng)輸出 level為 INFO 日志 --><appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_FILE_ROOT}/web-info.log</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.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE_ROOT}/web-info-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern><maxFileSize>100MB</maxFileSize><maxHistory>20</maxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread][%logger.java:%line] - %msg%n</pattern></encoder></appender><!-- 時(shí)間滾動(dòng)輸出 level為 WARN 日志 --><appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_FILE_ROOT}/web-warn.log</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.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE_ROOT}/web-warn-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern><maxFileSize>100MB</maxFileSize><maxHistory>7</maxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread][%logger.java:%line] - %msg%n</pattern></encoder></appender><!-- 時(shí)間滾動(dòng)輸出 level為 ERROR 日志 --><appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_FILE_ROOT}/web-error.log</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.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE_ROOT}/web-error-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern><maxFileSize>100MB</maxFileSize><maxHistory>30</maxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread][%logger.java:%line] - %msg%n</pattern></encoder></appender><!-- root Logger 分環(huán)境進(jìn)行配置,本地環(huán)境需要用的DEBUG --><springProfile name="dev"><root level="DEBUG"><appender-ref ref="STDOUT"/><appender-ref ref="DEBUG"/><appender-ref ref="INFO"/><appender-ref ref="WARN"/><appender-ref ref="ERROR"/></root></springProfile><springProfile name="pro"><root level="INFO"><appender-ref ref="STDOUT"/><appender-ref ref="INFO"/><appender-ref ref="WARN"/><appender-ref ref="ERROR"/></root></springProfile></configuration>
<root>標(biāo)簽
在 Logback 日志框架中,<root level> 標(biāo)簽用于定義根日志級(jí)別。根日志級(jí)別是指所有日志記錄器的默認(rèn)級(jí)別,如果沒(méi)有為特定的日志記錄器指定級(jí)別,則會(huì)使用根日志級(jí)別。
根日志級(jí)別通過(guò)<root> 元素來(lái)表示,其語(yǔ)法如下:
<root level="級(jí)別"><!-- appender 配置 -->
</root>
在這里,level 屬性用于指定根日志級(jí)別。根日志級(jí)別可以是以下之一:TRACE、DEBUG、INFO、WARN、ERROR 或 OFF。級(jí)別由低到高,TRACE 是最詳細(xì)的級(jí)別,而 OFF 表示禁用日志記錄。
當(dāng)一個(gè)日志事件發(fā)送到 Logback 時(shí),它將首先檢查根日志級(jí)別。如果事件的級(jí)別高于或等于根日志級(jí)別,那么該事件將被記錄下來(lái)。如果事件的級(jí)別低于根日志級(jí)別,那么它將被忽略。
因此,通過(guò)設(shè)置 <root level> 標(biāo)簽,您可以為整個(gè)應(yīng)用程序指定默認(rèn)的日志記錄級(jí)別。您還可以在其他地方針對(duì)特定的日志記錄器設(shè)置級(jí)別,以覆蓋根日志級(jí)別的默認(rèn)設(shè)置。
<appender-ref>標(biāo)簽
<appender-ref> 標(biāo)簽用于將日志事件附加器(appender)與特定的日志記錄器相關(guān)聯(lián)。在 Logback 配置文件中,可以使用 <appender-ref> 標(biāo)簽將一個(gè)或多個(gè)附加器與日志記錄器關(guān)聯(lián)起來(lái)。
<appender-ref> 元素的語(yǔ)法如下:
<appender-ref ref="附加器名稱" />
在這里,ref 屬性用于指定要關(guān)聯(lián)的附加器的名稱。附加器名稱應(yīng)與配置文件中定義的附加器的名稱匹配。
通過(guò)使用 <appender-ref> 標(biāo)簽,您可以將一個(gè)或多個(gè)附加器(例如文件附加器、控制臺(tái)附加器等)與日志記錄器相關(guān)聯(lián)。這意味著當(dāng)日志事件到達(dá)該日志記錄器時(shí),它將被傳遞給與之關(guān)聯(lián)的附加器進(jìn)行處理。這樣可以根據(jù)需要將日志事件輸出到不同的目標(biāo),例如文件、控制臺(tái)、遠(yuǎn)程服務(wù)器等。
以下是一個(gè)示例,展示如何使用 <appender-ref> 標(biāo)簽將附加器與日志記錄器關(guān)聯(lián):
<configuration><!-- 定義附加器 --><appender name="ConsoleAppender" class="ch.qos.logback.core.ConsoleAppender"><!-- 附加器配置 --></appender><!-- 定義日志記錄器 --><logger name="com.example.MyClass" level="DEBUG"><!-- 關(guān)聯(lián)附加器 --><appender-ref ref="ConsoleAppender" /></logger>
</configuration>
在上面的示例中,ConsoleAppender 是一個(gè)控制臺(tái)附加器,它被定義在 <appender> 元素中。然后,通過(guò)使用 <appender-ref> 標(biāo)簽,將該附加器與名為 com.example.MyClass 的日志記錄器關(guān)聯(lián)起來(lái)。這意味著 com.example.MyClass 日志記錄器的日志事件將被發(fā)送到 ConsoleAppender 進(jìn)行處理。
通過(guò)適當(dāng)配置 <appender-ref> 標(biāo)簽,您可以將多個(gè)附加器關(guān)聯(lián)到同一個(gè)日志記錄器,或者將同一個(gè)附加器關(guān)聯(lián)到多個(gè)日志記錄器,以滿足您的日志輸出需求。
簡(jiǎn)單的說(shuō):上述的示例就可以為我們輸出日志到自定義的文件夾中。
輸出日志到自定義文件
在開(kāi)發(fā)的過(guò)程中,難免會(huì)要在info日志和error日志中排查問(wèn)題,那么一個(gè)應(yīng)用部署在測(cè)試環(huán)境或者uat環(huán)境的時(shí)候,會(huì)產(chǎn)生大量的日志在日志文件中,如果我們需要查詢相關(guān)的日志記錄通常linux會(huì)使用grep來(lái)進(jìn)行搜索來(lái)滿足需求。如果你的功能會(huì)被大量調(diào)用,并且需要詳細(xì)記錄前后流轉(zhuǎn)的參數(shù);又或者在測(cè)試階段需要把用戶所有的權(quán)限和角色在日志文件中打印觀察。此時(shí)你可能需要把你這部分的功能開(kāi)發(fā)日志打印到一個(gè)單獨(dú)的日志文件中。
<!-- root Logger 分環(huán)境進(jìn)行配置,本地環(huán)境需要用的DEBUG --><springProfile name="dev"><root level="DEBUG"><appender-ref ref="STDOUT"/><appender-ref ref="DEBUG"/><appender-ref ref="INFO"/><appender-ref ref="WARN"/><appender-ref ref="ERROR"/></root></springProfile><springProfile name="pro"><root level="INFO"><appender-ref ref="STDOUT"/><appender-ref ref="INFO"/><appender-ref ref="WARN"/><appender-ref ref="ERROR"/></root></springProfile>
根據(jù)springProfile標(biāo)簽,我們可以分環(huán)境配置,dev環(huán)境的root級(jí)別改為DEBUG級(jí)別,pro環(huán)境使用INFO級(jí)別。所以如果你需要觀察用戶權(quán)限問(wèn)題打的日志可以使用log.debug()來(lái)記錄在debug的日志文件中。
那么如果想要新建一個(gè)日志文件(非info、error、warn、debug)的日志,例如支付相關(guān)的日志都放入paylog文件中。不管是DEBUG INFO WARN ERROR都直接放一起,那么我們需要自定義一個(gè)附加器appender和一個(gè)日志記錄器logger。
附加器定義如下:
<appender name="pay" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_FILE_ROOT}/qhyu.log</file><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>DEBUG</level><onMatch>ACCEPT</onMatch><onMismatch>NEUTRAL</onMismatch></filter><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>INFO</level><onMatch>ACCEPT</onMatch><onMismatch>NEUTRAL</onMismatch></filter><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>WARN</level><onMatch>ACCEPT</onMatch><onMismatch>NEUTRAL</onMismatch></filter><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.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE_ROOT}/qhyu-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern><maxFileSize>100MB</maxFileSize><maxHistory>20</maxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread][%logger.java:%line] - %msg%n</pattern></encoder></appender>
在 Logback 的過(guò)濾器配置中,<onMatch>
和 <onMismatch>
標(biāo)簽用于指定過(guò)濾器匹配和不匹配時(shí)的行為。它們需要配套使用。
-
<onMatch>
:該標(biāo)簽定義了當(dāng)日志事件與過(guò)濾器匹配時(shí)的操作。它有以下參數(shù):-
ACCEPT
:表示接受(通過(guò))匹配的日志事件,將其傳遞給后續(xù)的附加器或日志記錄器進(jìn)行處理。 -
NEUTRAL
:表示中立,不對(duì)匹配的日志事件進(jìn)行特殊處理,繼續(xù)按照日志處理流程進(jìn)行傳遞。 -
DENY
:表示拒絕(攔截)匹配的日志事件,不將其傳遞給后續(xù)的附加器或日志記錄器。
-
-
<onMismatch>
:該標(biāo)簽定義了當(dāng)日志事件與過(guò)濾器不匹配時(shí)的操作。它有以下參數(shù): -
ACCEPT
:表示接受(通過(guò))不匹配的日志事件,將其傳遞給后續(xù)的附加器或日志記錄器進(jìn)行處理。 -
NEUTRAL
:表示中立,不對(duì)不匹配的日志事件進(jìn)行特殊處理,繼續(xù)按照日志處理流程進(jìn)行傳遞。 -
DENY
:表示拒絕(攔截)不匹配的日志事件,不將其傳遞給后續(xù)的附加器或日志記錄器。
通常情況下,應(yīng)該將 <onMatch>
和 <onMismatch>
標(biāo)簽配對(duì)使用,以明確指定匹配和不匹配時(shí)的操作。例如,可以將匹配時(shí)的操作設(shè)置為 ACCEPT
,表示允許通過(guò)匹配的日志事件,而將不匹配時(shí)的操作設(shè)置為 DENY
,表示拒絕不匹配的日志事件。
以下是一個(gè)示例配置:
<filter class="ch.qos.logback.classic.filter.LevelFilter"><level>INFO</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch>
</filter>
在上述示例中,過(guò)濾器的配置指定了當(dāng)日志事件的級(jí)別為 INFO
時(shí),執(zhí)行匹配操作為 ACCEPT
,而當(dāng)日志事件的級(jí)別不是 INFO
時(shí),執(zhí)行不匹配操作為 DENY
。這意味著只有級(jí)別為 INFO
的日志事件才會(huì)通過(guò)過(guò)濾器,其他級(jí)別的日志事件將被拒絕。
因?yàn)槲蚁氚阉械娜罩径即虻揭粋€(gè)文件中,不區(qū)分info error還是warn所以我將四個(gè)過(guò)濾器放在同一個(gè)附加器中,如果你想為這個(gè)文件拆分的話可以配合日志記錄器一起使用,也就是接下來(lái)要說(shuō)的內(nèi)容。
日志記錄器如下:
<logger name="PAYLOGGER" level="DEBUG" additivity="false"><appender-ref ref="pay"/></logger>
如果使用的是自定義name,那么自己使用的時(shí)候需要定義Logger logger = LoggerFactory.getLogger(“PAYLOGGER”);這樣可以在任意的類中直接使用。
<logger>
標(biāo)簽用于配置特定包或類的日志記錄器。它允許您為特定的包或類設(shè)置不同于根日志記錄器的日志級(jí)別、附加器和其他屬性。
<logger>
標(biāo)簽有以下常用的屬性:
-
name
:指定要配置的包或類的名稱??梢允褂冒蝾惖娜薅?。例如,com.swcares.eupsi.airplaneSale
。 -
level
:設(shè)置該日志記錄器的日志級(jí)別。可以是TRACE
、DEBUG
、INFO
、WARN
或ERROR
等級(jí)別。例如,INFO
。 -
additivity
:指定是否繼承父級(jí)日志記錄器的附加器。如果設(shè)置為true
,則該日志記錄器將繼承父級(jí)日志記錄器的附加器;如果設(shè)置為false
,則該日志記錄器將僅使用自己配置的附加器。默認(rèn)值為true
。
除了上述常用屬性外,<logger>
標(biāo)簽還可以配置其他屬性,如 <appender-ref>
標(biāo)簽引用的附加器、<filter>
標(biāo)簽設(shè)置的過(guò)濾器等。這些屬性可以根據(jù)您的需求進(jìn)行配置和調(diào)整。
以下是一個(gè)示例 <logger>
標(biāo)簽的配置:
<logger name="com.qhyu.pay.modules.test" level="INFO" additivity="false"><appender-ref ref="SOME_APPENDER"/>
</logger>
在上述示例中,<logger>
標(biāo)簽配置了名為 com.qhyu.pay.modules.test
的日志記錄器,將日志級(jí)別設(shè)置為 INFO
,并指定了一個(gè)名為 SOME_APPENDER
的附加器。此外,additivity
屬性被設(shè)置為 false
,表示該日志記錄器不會(huì)繼承父級(jí)日志記錄器的附加器。
這種配置就是可以在這個(gè)類中直接使用,不需要定義Logger了。
通過(guò)使用 <logger>
標(biāo)簽,您可以對(duì)特定的包或類進(jìn)行精細(xì)化的日志配置,以滿足不同部分的日志記錄需求。
完整xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 每隔20S掃描1次配置文件,如果配置文件被修改自動(dòng)加載 -->
<configuration scan="true" scanPeriod="20 seconds"><!-- Windows操作系統(tǒng) --><if condition='property("os.name").contains("Windows")'><then><property name="LOG_FILE_ROOT" value="D://opt/applog/logs"/><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread][%logger.java:%line] - %msg%n</pattern></encoder></appender></then></if><!-- MAC操作系統(tǒng) --><if condition='property("os.name").toUpperCase().contains("MAC")'><then><property name="LOG_FILE_ROOT" value=".log/logs"/><!-- 控制臺(tái)輸出 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread][%logger.java:%line] - %msg%n</pattern></encoder></appender></then></if><!-- Linux操作系統(tǒng) --><if condition='property("os.name").contains("Linux")'><then><property name="LOG_FILE_ROOT" value="/opt/applog/-logs"/><!-- 控制臺(tái)輸出 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread][%logger.java:%line] - %msg%n</pattern></encoder></appender></then></if><springProfile name="dev"><appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_FILE_ROOT}/web-debug.log</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.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE_ROOT}/web-debug-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern><maxFileSize>100MB</maxFileSize><maxHistory>7</maxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread][%logger.java:%line] - %msg%n</pattern></encoder></appender></springProfile><!-- 時(shí)間滾動(dòng)輸出 level為 INFO 日志 --><appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_FILE_ROOT}/web-info.log</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.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE_ROOT}/web-info-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern><maxFileSize>100MB</maxFileSize><maxHistory>20</maxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread][%logger.java:%line] - %msg%n</pattern></encoder></appender><!-- 時(shí)間滾動(dòng)輸出 level為 INFO 日志 --><appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_FILE_ROOT}/web-warn.log</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.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE_ROOT}/web-warn-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern><maxFileSize>100MB</maxFileSize><maxHistory>7</maxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread][%logger.java:%line] - %msg%n</pattern></encoder></appender><!-- 時(shí)間滾動(dòng)輸出 level為 ERROR 日志 --><appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_FILE_ROOT}/web-error.log</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.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE_ROOT}/web-error-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern><maxFileSize>100MB</maxFileSize><maxHistory>30</maxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread][%logger.java:%line] - %msg%n</pattern></encoder></appender><!-- 時(shí)間滾動(dòng)輸出 所有級(jí)別的日志到預(yù)計(jì)的文件中 --><appender name="pay" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_FILE_ROOT}/pay.log</file><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>DEBUG</level><onMatch>ACCEPT</onMatch><onMismatch>NEUTRAL</onMismatch></filter><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>INFO</level><onMatch>ACCEPT</onMatch><onMismatch>NEUTRAL</onMismatch></filter><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>WARN</level><onMatch>ACCEPT</onMatch><onMismatch>NEUTRAL</onMismatch></filter><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.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_FILE_ROOT}/pay-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern><maxFileSize>100MB</maxFileSize><maxHistory>20</maxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart></rollingPolicy><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}[%level][%thread][%logger.java:%line] - %msg%n</pattern></encoder></appender><!--<logger name="com.qhyu.pay.modules.test" level="DEBUG" additivity="false"><appender-ref ref="pay"/></logger>--><logger name="PAYLOGGER" level="DEBUG" additivity="false"><appender-ref ref="pay"/></logger><!-- root Logger 分環(huán)境進(jìn)行配置,本地環(huán)境需要用的DEBUG --><springProfile name="dev"><root level="DEBUG"><appender-ref ref="STDOUT"/><appender-ref ref="DEBUG"/><appender-ref ref="INFO"/><appender-ref ref="WARN"/><appender-ref ref="ERROR"/></root></springProfile><springProfile name="pro"><root level="INFO"><appender-ref ref="STDOUT"/><appender-ref ref="INFO"/><appender-ref ref="WARN"/><appender-ref ref="ERROR"/></root></springProfile>
</configuration>