zoukankan      html  css  js  c++  java
  • logback与Spring、SpringMVC结合使用教程(转)

    摘要:本文主要介绍了如何在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与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>里面的转换符说明:

    转换符作用
    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
  • 相关阅读:
    (补充)10.Hibernate框架的查询方式
    12.Hibernate多对多关系
    11.Hibernate一对多关系
    (补充)06.Hibernate持久化类&持久化对象
    09.Hibernate中的事务与并发
    08.Hibernate的一级缓存-->>Session
    07.Hibernate常用的接口和类---Session接口☆☆☆☆☆
    05.Hibernate常用的接口和类---Configuration类和作用
    04.Hibernate常用的接口和类---SessionFactory类和作用
    python学习笔记(字典)
  • 原文地址:https://www.cnblogs.com/anyiz/p/10712299.html
Copyright © 2011-2022 走看看