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

一、logback与Spirng结合使用

1、maven添加引用:


  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

 


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

参数内容如下:

 


  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与Spring、SpringMVC结合使用教程(转) logback good_sql

看看输出的文件:

logback与Spring、SpringMVC结合使用教程(转) logback good_sed_02

二、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目录 下:

logback与Spring、SpringMVC结合使用教程(转) logback good_sed_03

而如果将此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. >  
  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. <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最右边点符号之后的字符串。

 

C {length } 

class {length } 

输出执行记录请求的调用者的全限定名。参数与上面的一样。尽量避免使用,除非执行速度不造成任何问题。

contextName 

cn 

输出上下文名称。

d {pattern } 

date {pattern } 

输出日志的打印日志,模式语法与java.text.SimpleDateFormat 兼容。

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

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