logback與Spring、SpringMVC結合使用教程

摘要:本文主要介紹瞭如何在spring、springMVC中使用logback java

1、logback與Spirng結合使用

一、maven添加引用: mysql

  1. <dependency>  
  2.     <groupId>log4j</groupId>  
  3.     <artifactId>log4j</artifactId>  
  4.     <version>${log4j.version}</version>  
  5. </dependency>  
  6. <dependency>  
  7.     <groupId>org.slf4j</groupId>  
  8.     <artifactId>slf4j-api</artifactId>  
  9.     <version>${slf4j.version}</version>  
  10. </dependency>  
  11. <dependency>  
  12.     <groupId>ch.qos.logback</groupId>  
  13.     <artifactId>logback-classic</artifactId>  
  14.     <version>1.1.2</version>  
  15. </dependency>  
  16. <dependency>  
  17.     <groupId>ch.qos.logback</groupId>  
  18.     <artifactId>logback-core</artifactId>  
  19.     <version>1.1.2</version>  
  20. </dependency>  
  21. <dependency>  
  22.     <groupId>org.logback-extensions</groupId>  
  23.     <artifactId>logback-ext-spring</artifactId>  
  24.     <version>0.1.1</version>  
  25. </dependency>  
其中logback-ext-spring這個jar包是爲了和spring一塊兒使用的。

二、src/main/resource添加logback.xml linux

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <configuration>  
  3.     <!-- 儘可能別用絕對路徑,若是帶參數不一樣容器路徑解釋可能不一樣,如下配置參數在pom.xml裏 -->  
  4.     <property name="log.root.level" value="${log.root.level}" /> <!-- 日誌級別 -->  
  5.     <property name="log.other.level" value="${log.other.level}" /> <!-- 其餘日誌級別 -->  
  6.     <property name="log.base" value="${log.base}" /> <!-- 日誌路徑,這裏是相對路徑,web項目eclipse下會輸出到eclipse的安裝目錄下,若是部署到linux上的tomcat下,會輸出到tomcat/bin目錄 下 -->  
  7.     <property name="log.moduleName" value="${log.moduleName}" />  <!-- 模塊名稱, 影響日誌配置名,日誌文件名 -->  
  8.     <property name="log.max.size" value="100MB" /> <!-- 日誌文件大小 -->  
  9.   
  10.     <!--控制檯輸出 -->  
  11.     <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">  
  12.         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">  
  13.             <Pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread]%logger{56}.%method:%L -%msg%n</Pattern>  
  14.         </encoder>  
  15.     </appender>  
  16.   
  17.   <!-- 日誌文件輸出 -->  
  18.     <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  19.         <File>${log.base}/${log.moduleName}.log</File><!-- 設置日誌不超過${log.max.size}時的保存路徑,注意若是 是web項目會保存到Tomcat的bin目錄 下 -->  
  20.         <!-- 滾動記錄文件,先將日誌記錄到指定文件,當符合某個條件時,將日誌記錄到其餘文件。-->  
  21.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  22.             <FileNamePattern>${log.base}/archive/${log.moduleName}_all_%d{yyyy-MM-dd}.%i.log.zip  
  23.             </FileNamePattern>  
  24.             <!-- 當天的日誌大小 超過${log.max.size}時,壓縮日誌並保存 -->  
  25.             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">  
  26.                 <maxFileSize>${log.max.size}</maxFileSize>  
  27.             </timeBasedFileNamingAndTriggeringPolicy>  
  28.         </rollingPolicy>  
  29.         <!-- 日誌輸出的文件的格式  -->  
  30.         <layout class="ch.qos.logback.classic.PatternLayout">  
  31.             <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread]%logger{56}.%method:%L -%msg%n</pattern>  
  32.         </layout>  
  33.     </appender>  
  34.    
  35.     <!-- 爲某個包下的全部類的指定Appender 這裏也能夠指定類名稱例如:com.aa.bb.ClassName -->  
  36.     <logger name="com.lin" additivity="false">  
  37.         <level value="debug" />  
  38.         <appender-ref ref="stdout" />  
  39.         <appender-ref ref="file" />  
  40.     </logger>  
  41.     <!-- root將級別爲「DEBUG」及大於「DEBUG」的日誌信息交給已經配置好的名爲「Console」的appender處理,「Console」appender將信息打印到Console -->  
  42.     <root level="debug">  
  43.         <appender-ref ref="stdout" /> <!-- 標識這個appender將會添加到這個logger -->  
  44.         <appender-ref ref="file" />  
  45.     </root>  
  46. </configuration>  

其中,下面這幾個參數 是在pom.xml裏配置的,若是你不想在pom.xml裏來配置,也能夠直接寫死就是 web

<property name="log.root.level" value="${log.root.level}" /> 
<property name="log.other.level" value="${log.other.level}" /> 
<property name="log.base" value="${log.base}" /> 
<property name="log.moduleName" value="${log.moduleName}" />  
<property name="log.max.size" value="10kb" /> 正則表達式

參數內容以下: spring

  1. <profiles>  
  2.         <!-- 開發環境 -->  
  3.         <profile>  
  4.             <id>dev</id>  
  5.             <activation>  
  6.                 <activeByDefault>true</activeByDefault>  
  7.             </activation>  
  8.             <!-- 如下配置properties中用到一些變量,如數據庫鏈接參數、日誌打印等 -->  
  9.             <properties>  
  10.                 <!-- DB Resource -->  
  11.                 <jdbc_driverClassName>com.mysql.jdbc.Driver</jdbc_driverClassName>  
  12.                 <jdbc_url>jdbc:mysql://localhost:3306/learning</jdbc_url>  
  13.                 <jdbc_username>root</jdbc_username>  
  14.                 <jdbc_password>christmas258@</jdbc_password>  
  15.   
  16.                 <log.moduleName>ssm-project</log.moduleName>  
  17.                 <log.base>logs</log.base>  
  18.                 <log.other.level>DEBUG</log.other.level>  
  19.                 <log.root.level>DEBUG</log.root.level>  
  20.                 <log.stdout.ref><![CDATA[<appender-ref ref="stdout" />]]></log.stdout.ref>  
  21.             </properties>  
  22.         </profile>  
  23.     </profiles>  

三、若是單獨的跑一個spring項目,不帶web頁面的話,那麼這時跑個單元測試就能夠打印日誌了

看看輸出的文件:

2、logback與spingMVC結合使用

其實與spingMVC只須要在上面的工程中,在web.xml裏添加以下內容便可。
  1.    <!-- 添加日誌監聽器 -->  
  2. <context-param>  
  3.     <param-name>logbackConfigLocation</param-name>  
  4.     <param-value>classpath:logback.xml</param-value>  
  5. </context-param>  
  6. <listener>  
  7.     <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>  
  8. </listener>  
而後本地啓動tomcat,把項目加載進來,注意,此時的日誌輸出路徑 不會像上面同樣出如今工程所在路徑的logs目錄下,而會放在eclipse安裝目錄下,自動新建一個logs目錄 下:

而若是將此war包上傳到linux下的tomcat的webapp目錄後,日誌文件會保存在tomcat/bin/logs目錄下,記得,這個是web項目和非web項目日誌保存路徑的不一樣!

下面這一個是配置比較複雜的,大的工程更多的是以這種方式來配置的,針對不一樣的包,不一樣級別的日誌來分別打印,以下:
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <configuration>  
  3.     <!-- 儘可能別用絕對路徑,若是帶參數不一樣容器路徑解釋可能不一樣,如下配置參數在pom.xml裏 -->  
  4.     <property name="log.root.level" value="${log.root.level}" /> <!-- 日誌級別 -->  
  5.     <property name="log.other.level" value="${log.other.level}" /> <!-- 其餘日誌級別 -->  
  6.     <property name="log.base" value="${log.base}" /> <!-- 日誌路徑,這裏是相對路徑,web項目eclipse下會輸出到eclipse的安裝目錄下,若是部署到linux上的tomcat下,會輸出到tomcat/bin目錄 下 -->  
  7.     <property name="log.moduleName" value="${log.moduleName}" />  <!-- 模塊名稱, 影響日誌配置名,日誌文件名 -->  
  8.     <property name="log.max.size" value="100MB" /> <!-- 日誌文件大小,超過這個大小將被壓縮 -->  
  9.   
  10.     <!--控制檯輸出 -->  
  11.     <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">  
  12.         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">  
  13.             <Pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n</Pattern>  
  14.         </encoder>  
  15.     </appender>  
  16.   
  17.     <!-- 用來保存輸出全部級別的日誌 -->  
  18.     <appender name="file.all" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  19.         <File>${log.base}/${log.moduleName}.log</File><!-- 設置日誌不超過${log.max.size}時的保存路徑,注意若是   
  20.             是web項目會保存到Tomcat的bin目錄 下 -->  
  21.         <!-- 滾動記錄文件,先將日誌記錄到指定文件,當符合某個條件時,將日誌記錄到其餘文件。 -->  
  22.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  23.             <FileNamePattern>${log.base}/archive/${log.moduleName}_all_%d{yyyy-MM-dd}.%i.log.zip  
  24.             </FileNamePattern>  
  25.             <!-- 文件輸出日誌 (文件大小策略進行文件輸出,超過指定大小對文件備份) -->  
  26.             <timeBasedFileNamingAndTriggeringPolicy  
  27.                 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">  
  28.                 <maxFileSize>${log.max.size}</maxFileSize>  
  29.             </timeBasedFileNamingAndTriggeringPolicy>  
  30.         </rollingPolicy>  
  31.         <!-- 日誌輸出的文件的格式 -->  
  32.         <layout class="ch.qos.logback.classic.PatternLayout">  
  33.             <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n</pattern>  
  34.         </layout>  
  35.     </appender>  
  36.       
  37.     <!-- 這也是用來保存輸出全部級別的日誌 -->  
  38.     <appender name="file.all.other" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  39.         <File>${log.base}/${log.moduleName}_other.log</File>  
  40.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  41.             <FileNamePattern>${log.base}/archive/${log.moduleName}_other_%d{yyyy-MM-dd}.%i.log.zip  
  42.             </FileNamePattern>  
  43.             <timeBasedFileNamingAndTriggeringPolicy  
  44.                 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">  
  45.                 <maxFileSize>${log.max.size}</maxFileSize>  
  46.             </timeBasedFileNamingAndTriggeringPolicy>  
  47.         </rollingPolicy>  
  48.         <layout class="ch.qos.logback.classic.PatternLayout">  
  49.             <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{56}.%method:%L -%msg%n</pattern>  
  50.         </layout>  
  51.     </appender>  
  52.   
  53.     <!-- 只用保存輸出error級別的日誌 -->  
  54.     <appender name="file.error"  
  55.         class="ch.qos.logback.core.rolling.RollingFileAppender">  
  56.         <File>${log.base}/${log.moduleName}_err.log</File>  
  57.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  58.             <FileNamePattern>${log.base}/archive/${log.moduleName}_err_%d{yyyy-MM-dd}.%i.log.zip  
  59.             </FileNamePattern>  
  60.             <timeBasedFileNamingAndTriggeringPolicy  
  61.                 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">  
  62.                 <maxFileSize>${log.max.size}</maxFileSize>  
  63.             </timeBasedFileNamingAndTriggeringPolicy>  
  64.         </rollingPolicy>  
  65.         <layout class="ch.qos.logback.classic.PatternLayout">  
  66.             <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{56}.%method:%L - %msg%n</pattern>  
  67.         </layout>  
  68.         <!-- 下面爲配置只輸出error級別的日誌 -->  
  69.         <filter class="ch.qos.logback.classic.filter.LevelFilter">  
  70.             <level>ERROR</level>  
  71.             <onMatch>ACCEPT</onMatch>  
  72.             <onMismatch>DENY</onMismatch>  
  73.         </filter>  
  74.     </appender>  
  75.   
  76.    <!-- 不丟失日誌.默認的,若是隊列的80%已滿,則會丟棄TRACT、DEBUG、INFO級別的日誌 -->  
  77.     <!-- 更改默認的隊列的深度,該值會影響性能.默認值爲256 -->  
  78.     <!-- 添加附加的appender,最多隻能添加一個 -->  
  79.     <appender name="file.async" class="ch.qos.logback.classic.AsyncAppender">  
  80.         <discardingThreshold>0</discardingThreshold>  
  81.         <queueSize>256</queueSize>  
  82.         <includeCallerData>true</includeCallerData>  
  83.         <appender-ref ref="file.all" />  
  84.     </appender>  
  85.   
  86.     <appender name="file.async.other" class="ch.qos.logback.classic.AsyncAppender">  
  87.         <discardingThreshold>0</discardingThreshold>  
  88.         <queueSize>256</queueSize>  
  89.         <includeCallerData>true</includeCallerData>  
  90.         <appender-ref ref="file.all.other" />  
  91.     </appender>  
  92.   
  93.     <!-- 爲某個包下的全部類的指定Appender 這裏也能夠指定類名稱例如:com.aa.bb.ClassName -->  
  94.     <logger name="com.lin" additivity="false">  
  95.         <level value="${log.root.level}" />  
  96.         <appender-ref ref="stdout" />   
  97.         <appender-ref ref="file.async" /><!-- 即com.lin包下級別爲 ${log.root.level}的纔會使用file.async來打印 -->  
  98.         <appender-ref ref="file.error" />  
  99.     </logger>  
  100.       
  101.     <!-- root將級別爲${log.root.level}及大於${log.root.level}的日誌信息交給已經配置好的名爲「Console」的appender處理,「Console」appender將信息打印到Console,其它同理 -->  
  102.     <root level="${log.root.level}">  
  103.         <appender-ref ref="stdout" /> <!--  標識這個appender將會添加到這個logger -->  
  104.         <appender-ref ref="file.async.other" />  
  105.         <appender-ref ref="file.error" />  
  106.     </root>  
  107. </configuration>  

還有另外一個網上的找的配置文件,筆者 沒有使用過,不過,你們能夠參考下來寫:
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <configuration scan="true" scanPeriod="10 seconds" debug="false">  
  3.   
  4.     <!--打印logback初始化日誌系統信息,debug="true"是同等效果-->  
  5.     <!--<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener"/>-->  
  6.   
  7.     <!-- 將日誌輸出在當前項目的根目錄下 -->  
  8.     <property name="contextPath" value="/home/logs/valiuser"/>  
  9.     <!-- 日誌的上下文路徑 -->  
  10.     <property name="logPath" value="${contextPath}"/>  
  11.     <!-- 配置日誌的滾動時間 -->  
  12.     <property name="maxHistory" value="90"/>  
  13.       
  14.       
  15.     <!-- 打印日誌到控制檯 -->  
  16.     <appender name="rootConsole" class="ch.qos.logback.core.ConsoleAppender">  
  17.         <!-- encoder 在控制檯打印日誌的格式 -->    
  18.         <encoder>  
  19.             <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n</pattern>  
  20.         </encoder>  
  21.     </appender>  
  22.   
  23.     <!--  
  24.         定義日誌的輸出方式:輸出在文件夾debug/debug.log文件中  
  25.         配置全部類全部級別的滾動日誌  
  26.     -->  
  27.     <appender name="rootRollingDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  28.         <file>${logPath}/debug/debug.log</file>  
  29.           
  30.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  31.             <fileNamePattern>${logPath}/debug/debug.%d{yyyy-MM-dd}.log</fileNamePattern>  
  32.             <!-- 設置日誌的滾動時間 -->  
  33.             <maxHistory>${maxHistory}</maxHistory>  
  34.         </rollingPolicy>  
  35.         <encoder>  
  36.             <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n</pattern>  
  37.             <charset>UTF-8</charset>  
  38.         </encoder>  
  39.     </appender>  
  40.       
  41.     <!--  
  42.         定義日誌的輸出方式:輸出在文件夾info/root.log文件中  
  43.         配置全部類INFO級別的滾動日誌  
  44.     -->  
  45.     <appender name="rootRollingInfo" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  46.         <file>${logPath}/info/info.log</file>  
  47.   
  48.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  49.             <fileNamePattern>${logPath}/info/info.%d{yyyy-MM-dd}.log</fileNamePattern>  
  50.             <!-- 設置日誌的滾動時間 -->  
  51.             <maxHistory>${maxHistory}</maxHistory>  
  52.         </rollingPolicy>  
  53.         <encoder>  
  54.             <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n</pattern>  
  55.             <charset>UTF-8</charset>  
  56.         </encoder>  
  57.         <!--   
  58.             info/root.log文件中的日誌級別是 INFO以上的級別  
  59.             <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 和  
  60.             <filter class="ch.qos.logback.classic.filter.LevelFilter">的區別是什麼呢?  
  61.               
  62.             LevelFilter:嚴格限制日誌的輸出級別,使用LevelFilter設置,只會在文件中出現級別爲INFO級別的日誌內容。  
  63.          -->   
  64.         <filter class="ch.qos.logback.classic.filter.LevelFilter">   
  65.             <level>INFO</level>  
  66.             <onMatch>ACCEPT</onMatch>    
  67.             <onMismatch>DENY</onMismatch>  
  68.         </filter>  
  69.     </appender>  
  70.   
  71.     <!--  
  72.         定義日誌的輸出方式:輸出在文件夾warn/root.log文件中  
  73.         配置全部類WARN級別的滾動日誌  
  74.     -->    
  75.     <appender name="rootRollingWarn" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  76.         <file>${logPath}/warn/warn.log</file>  
  77.   
  78.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  79.             <fileNamePattern>${logPath}/warn/warn.%d{yyyy-MM-dd}.log</fileNamePattern>  
  80.             <!-- 設置日誌的滾動時間 -->  
  81.             <maxHistory>${maxHistory}</maxHistory>  
  82.         </rollingPolicy>  
  83.         <encoder>  
  84.             <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n</pattern>  
  85.             <charset>UTF-8</charset>  
  86.         </encoder>   
  87.         <!-- warn/root.log文件中的日誌級別是 WARN以上的級別  -->  
  88.         <filter class="ch.qos.logback.classic.filter.LevelFilter">  
  89.             <level>WARN</level>  
  90.         </filter>  
  91.     </appender>  
  92.     <!--  
  93.         定義日誌的輸出方式:輸出在文件夾error/root.log文件中  
  94.         配置全部類ERROR級別的滾動日誌  
  95.     -->  
  96.     <appender name="rootRollingError" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  97.         <file>${logPath}/error/error.log</file>  
  98.   
  99.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  100.             <fileNamePattern>${logPath}/error/error.%d{yyyy-MM-dd}.log</fileNamePattern>  
  101.             <!-- 設置日誌的滾動時間 -->  
  102.             <maxHistory>${maxHistory}</maxHistory>  
  103.         </rollingPolicy>  
  104.         <encoder>  
  105.             <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n</pattern>  
  106.             <charset>UTF-8</charset>  
  107.         </encoder>  
  108.         <!-- error/root.log文件中的日誌級別是 ERROR以上的級別 -->  
  109.         <filter class="ch.qos.logback.classic.filter.LevelFilter">  
  110.             <level>ERROR</level>  
  111.         </filter>  
  112.     </appender>  
  113.   
  114.     <!--  
  115.         定義日誌的輸出方式:輸出在文件夾sql/root.log文件中  
  116.         配置全部類SQL的日誌  
  117.     -->  
  118.     <appender name="rootRollingSql" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  119.         <file>${logPath}/sql/sql.log</file>  
  120.   
  121.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  122.             <fileNamePattern>${logPath}/sql/sql.%d{yyyy-MM-dd}.log</fileNamePattern>  
  123.             <!-- 設置日誌的滾動時間 -->  
  124.             <maxHistory>${maxHistory}</maxHistory>  
  125.         </rollingPolicy>  
  126.         <encoder>  
  127.             <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n</pattern>  
  128.             <charset>UTF-8</charset>  
  129.         </encoder>  
  130.     </appender>  
  131.       
  132.     <!--  
  133.         定義日誌的輸出方式:輸出在文件夾business/rootsql.log文件中  
  134.         打印業務邏輯級別的日誌到business文件下  
  135.     -->  
  136.     <appender name="businessRollingDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  137.         <file>${logPath}/business/business.log</file>  
  138.   
  139.         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
  140.             <fileNamePattern>${logPath}/business/business.%d{yyyy-MM-dd}.log</fileNamePattern>  
  141.             <!-- 設置日誌的滾動時間 -->  
  142.             <maxHistory>${maxHistory}</maxHistory>  
  143.         </rollingPolicy>  
  144.         <encoder>  
  145.             <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n</pattern>  
  146.             <charset>UTF-8</charset>  
  147.         </encoder>  
  148.     </appender>  
  149.       
  150.     <!--   
  151.         默認的日誌主線程<root>  
  152.         定義輸出日誌的級別.DEBUG級別  
  153.         下面設置的意思是:會將debug級別的日誌輸出在一下這五個appender-ref對應的appender上  
  154.      -->  
  155.     <root level="DEBUG">  
  156.         <appender-ref ref="rootConsole"/>   
  157.         <appender-ref ref="rootRollingDebug"/>  
  158.     </root>  
  159.     <root level="WARN">  
  160.         <appender-ref ref="rootRollingWarn"/>   
  161.     </root>  
  162.     <root level="ERROR">  
  163.         <appender-ref ref="rootRollingError"/>   
  164.     </root>  
  165.     <root level="INFO">  
  166.         <appender-ref ref="rootRollingInfo"/>   
  167.     </root>  
  168.   
  169.     <!--   
  170.         除了使用默認的日誌主線程<root>外,還能夠經過<logger>標籤訂製其餘日誌線程如:  
  171.         其中name指定線程針對的包路徑,level是日誌級別,<appender-ref>定義使用那種appender。  
  172.      -->  
  173.   
  174.     <!--log4jdbc   begin -->  
  175.       
  176.     <!--   
  177.         jdbc.sqlonly不顯示sql執行的時間  
  178.         jdbc.sqltiming顯示sql執行的時間{executed in 2 msec}   
  179.         兩者使用一個便可  
  180.       
  181.     <logger name="jdbc.sqlonly" level="DEBUG"  addtivity="false">  
  182.         <appender-ref ref="rootConsole"/>  
  183.         <appender-ref ref="rootRollingSql"/>  
  184.     </logger>  
  185.       
  186.     -->  
  187.     <logger name="jdbc.sqltiming" level="DEBUG" addtivity="false">  
  188.         <appender-ref ref="rootConsole"/>  
  189.         <appender-ref ref="rootRollingSql"/>  
  190.     </logger>  
  191.       
  192.     <!--log4jdbc   end -->  
  193.       
  194.     <!--   
  195.         打印項目中com包下的日誌到appender-ref指定的appender中  打印級別是debug  
  196.         這裏能夠用來專門打印某一類別的日誌到某一個特定的文件中.  
  197.         好比:能夠打印全部的業務邏輯到業務邏輯文件中;打印全部的controller請求到指定的文件中.  
  198.     -->  
  199.     <logger name="com" level="DEBUG" addtivity="true">  
  200.         <appender-ref ref="businessRollingDebug"/>  
  201.     </logger>   
  202.     <!--   
  203.         打印具體的某個文件中的日誌到某個文件夾下.  
  204.         注意:不是打印com.baihui.LogBackTest2文件夾下的日誌,而是LogBackTest2文件的日誌  
  205.         addtivity="false" 表示打印的日誌不向上傳遞,若是設置成addtivity="true"會怎麼樣呢?沒錯,日誌打印了兩遍  
  206.      -->  
  207.     <logger name="com.baihui" level="DEBUG" addtivity="false">  
  208.         <appender-ref ref="rootConsole"/>  
  209.     </logger>  
  210.       
  211.     <logger name="baihui" level="ERROR" addtivity="false">  
  212.         <appender-ref ref="rootConsole"/>  
  213.     </logger>  
  214.       
  215. </configuration>  

附件

 <pattern>裏面的轉換符說明: sql

 

轉換符 做用
c {length } 
lo {length } 
logger {length } 
輸出日誌的logger名,可有一個整形參數,功能是縮短logger名,設置爲0表示只輸入logger最右邊點符號以後的字符串。
Conversion specifier Logger name Result
%logger mainPackage.sub.sample.Bar mainPackage.sub.sample.Bar
%logger{0} mainPackage.sub.sample.Bar Bar
%logger{5} mainPackage.sub.sample.Bar m.s.s.Bar
%logger{10} mainPackage.sub.sample.Bar m.s.s.Bar
%logger{15} mainPackage.sub.sample.Bar m.s.sample.Bar
%logger{16} mainPackage.sub.sample.Bar m.sub.sample.Bar
%logger{26} mainPackage.sub.sample.Bar mainPackage.sub.sample.Bar

 

C {length } 
class {length } 
輸出執行記錄請求的調用者的全限定名。參數與上面的同樣。儘可能避免使用,除非執行速度不形成任何問題。
contextName 
cn 
輸出上下文名稱。
d {pattern } 
date {pattern } 
輸出日誌的打印日誌,模式語法與java.text.SimpleDateFormat 兼容。
Conversion Pattern Result
%d 2006-10-20 14:06:49,812
%date 2006-10-20 14:06:49,812
%date{ISO8601} 2006-10-20 14:06:49,812
%date{HH:mm:ss.SSS} 14:06:49.812
%date{dd MMM yyyy ;HH:mm:ss.SSS} 20 oct. 2006;14:06:49.812
F / file 輸出執行記錄請求的java源文件名。儘可能避免使用,除非執行速度不形成任何問題。
caller{depth}caller{depth, evaluator-1, ... evaluator-n} 輸出生成日誌的調用者的位置信息,整數選項表示輸出信息深度。

例如, %caller{2}   輸出爲: 數據庫

0    [main] DEBUG - logging statement 
Caller+0   at mainPackage.sub.sample.Bar.sampleMethodName(Bar.java:22)
Caller+1   at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)

例如, %caller{3}   輸出爲: api

16   [main] DEBUG - logging statement 
Caller+0   at mainPackage.sub.sample.Bar.sampleMethodName(Bar.java:22)
Caller+1   at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)
Caller+2   at mainPackage.ConfigTester.main(ConfigTester.java:38)
L / line 輸出執行日誌請求的行號。儘可能避免使用,除非執行速度不形成任何問題。
m / msg / message

輸出應用程序提供的信息。 tomcat

M / method 輸出執行日誌請求的方法名。儘可能避免使用,除非執行速度不形成任何問題。
n 輸出平臺先關的分行符「\n」或者「\r\n」。
p / le / level 輸出日誌級別。
r / relative 輸出從程序啓動到建立日誌記錄的時間,單位是毫秒
t / thread 輸出產生日誌的線程名。
replace(p ){r, t}

p 爲日誌內容,r 是正則表達式,將p 中符合r 的內容替換爲t 。

例如, "%replace(%msg){'\s', ''}"

相關文章
相關標籤/搜索