繼續上篇文章log4jdbc-log4j2留下的問題,就是logback日誌切分的問題。 html
上一篇是介紹log4jdbc-log4j2 和log4j的使用,那麼這邊我就介紹一下log4jdbc-log4j2 和slf4j、logback的結合使用 sql
咱們來假想這麼一種狀況,當系統出現了問題,咱們須要快速分析問題出在哪裏並解決。 數據庫
(1) 首先咱們須要知道故障發生的時間,而後查看日誌,當我跟蹤日誌的時候,發現就只有一個log,並且這個log超大,普通的通常的編輯器根本沒法打開這種超大的日誌文件,就算能打開,找到故障發生點的日誌也不是一件容易的事情,是否是很頭疼。 api
這個時候咱們就會想要是日誌能給我按照天給我存儲就行了,那樣我就能快速的定位日誌在哪裏了。 app
若是訪問量比較大,就算按天訪問,天天的log文件也很大怎麼辦,並且咱們硬盤有限,也沒有必要把全部的日誌都保存起來,我只須要保存最近10天的日誌就行,過時的就自動刪除。 編輯器
並且要是能把錯誤日誌和訪問日誌分開存儲那就更好了。如今咱們就來學習一下logback(也是log4j的做者),由於logback已經提供了咱們上面所說的功能。 學習
那麼今天咱們就來使用slf4j和logback來實現上述功能。 spa
一、咱們須要Logback-classic.jar,Logback-classic.jar依賴slf4j-api.jar和logback-core.jar,因此咱們須要這三個jar 日誌
二、咱們須要告訴log4jdbc-log4j2咱們要使用slf4j日誌,那麼怎麼才能告訴它呢? code
咱們須要在classpath下新建log4jdbc.log4j2.properties文件
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
3 、配置Logger
這裏有6個Logger供咱們配置,而log4j只有一個Logger啊,咱們先來看看這6個logger:
這幾個Logger都是和jdbc數據庫有關的,對開發人員來講,我想要的就是簡潔的sql語句就行,因此我咱們通常經常使用jdbc.sqltiming,jdbc.resultsettable
那咱們來看看logback.xml示例
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 該配置主要是打印 logback 的配置信息 --> <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener"/> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <appender name="ACCESS" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 按天回滾 daily --> <fileNamePattern>logs/access-%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 日誌最大的歷史 10天 --> <maxHistory>10</maxHistory> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern> </encoder> <!-- 日誌級別限制 --> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY </onMismatch> </filter> <!--日誌文件最大的大小 --> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender> <!--sql 打印在控制檯--> <logger name="jdbc.sqltiming" level="INFO"> <appender-ref ref="console" /> </logger> <logger name="jdbc.resultsettable" level="INFO"></logger> <logger name="jdbc.sqlonly" level="OFF"></logger> <logger name="jdbc.audit" level="OFF"></logger> <logger name="jdbc.resultset" level="OFF"></logger> <logger name="jdbc.connection" level="OFF"></logger> <!--同時記錄log日誌--> <root level="INFO"> <appender-ref ref="ACCESS" /> </root> </configuration>
配置文件中的appender 能夠配置多個,其實您還能夠配置一個錯誤的日誌文件,只須要把日誌級別限制修改爲ERROR就行,同時在添加到root中就好了,其餘的具體配置咱們能夠參考http://logback.qos.ch/manual/index.html logback的官網。