logback與Spring、SpringMVC結合使用教程(轉) logback good


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

一、logback與Spirng結合使用

1、maven添加引用:

 

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  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一起使用的。

 

2、src/main/resource添加logback.xml

 

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  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里來配置,也可以直接寫死就是

<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" />

參數內容如下:

 

[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  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>  

 

 

3、如果單獨的跑一個spring項目,不帶web頁面的話,那么這時跑個單元測試就可以打印日志了

看看輸出的文件:

二、logback與spingMVC結合使用

其實與spingMVC只需要在上面的工程中,在web.xml里添加如下內容即可。
[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  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項目日志保存路徑的不同!
 
下面這一個是配置比較復雜的,大的工程更多的是以這種方式來配置的,針對不同的包,不同級別的日志來分別打印,如下:
[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  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>  

還有另一個網上的找的配置文件,筆者 沒有使用過,不過,大家可以參考下來寫:
[html]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  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>里面的轉換符說明:

 

轉換符 作用
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}   輸出為:

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

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

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', ''}"

 

 

參考文章:http://www.360doc.com/content/14/1016/15/8072791_417440479.shtml
http://blog.csdn.net/evankaka/article/details/50637994


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM