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 specifierLogger nameResult
%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 PatternResult
%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 输出平台先关的分行符“ ”或者“ ”。
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
原文地址:https://www.cnblogs.com/softidea/p/5271761.html