log4jdbc-log4j2

繼續上篇文章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

  • jdbc.sqlonly
  • jdbc.sqltiming:
  • jdbc.audit:
  • jdbc.resultset:
  • jdbc.resultsettable:
  • jdbc.connection:

    那咱們來看看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的官網。

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息