• 2017.7.27 logback配置文件


    参考来自: Java深入 - logback的配置和使用

    1 模块组成

    logback分成三个模块:logback-core,logback- classic和logback-access。

    1 logback-core:其他两个的基础模块。
    2 logback-classic:log4j的改良版本。完整实现slf4j的api,因此可以很方便的换成其他日志系统。
    3 logback-access:与servlet集成,提供通过http来访问日志的功能。

    2 maven依赖

            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j-version}</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>${logback-version}</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>{logback-version}</version>
            </dependency>    

    3 配置文件

    3.1 存放位置

    logback的配置文件都放在/src/main/resource/文件夹下的logback.xml文件中,系统会自动找到这个配置文件。

    也可以自定义配置文件的位置:

    3.2  在控制台输出指定级别的日志

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <configuration>
     4     <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
     5         <!-- 典型的日志pattern -->
     6         <encoder>
     7             <pattern>[AAS] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n</pattern>
     8         </encoder>
     9     </appender>
    10     <root> 
    11         <level value="error"/>  
    12         <appender-ref ref="console"/>
    13     </root>
    14 </configuration>

    3.3 在文件中存放指定级别的日志

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <configuration>
     3     <!-- 综合时间与大小的滚动策略,先按小时滚动,小时内的文件大于10mb时再按大小滚动 -->
     4     <appender name="logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
     5         <file>/var/log/local/xinsight/aas/aas.log</file>
     6         <Encoding>UTF-8</Encoding>
     7         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     8             <fileNamePattern>/var/log/local/xinsight/aas/aas-%d{yyyy-MM-dd_HH}.%i.zip</fileNamePattern>
     9             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
    10                 <maxFileSize>10MB</maxFileSize>
    11             </timeBasedFileNamingAndTriggeringPolicy>
    12         </rollingPolicy>
    13 
    14         <encoder>
    15             <pattern>[AAS] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n</pattern>
    16         </encoder>
    17     </appender>
    18 
    19     <root>
    20         <level value="WARN"/>
    20 <level value="INFO"/> 21 <appender-ref ref="logFile" /> 22 </root> 23 </configuration>

    3.4 精确设置每个包下面的日志

    2     <logger name="com.service" level="WARN"/>
    3     <logger name="com.common" level="DEBUG"/>
    4     <logger name="dao" level="DEBUG">
    5        <appender-ref ref="file" />  
    6        <appender-ref ref="console" />  
    7     </logger>

    3.5 完整示例

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <configuration>
     3 
     4     <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
     5         <!-- 典型的日志pattern -->
     6         <encoder>
     7             <pattern>[AAS] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n</pattern>
     8         </encoder>
     9     </appender>
    10 
    11     <!-- 演示按时间滚动的策略 -->
    12     <!--<appender name="defaultlogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
    13     <!--<file>/tmp/logs/authmgr.log</file>-->
    14     <!-- -->
    15     <!--<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">-->
    16     <!--<fileNamePattern>/tmp/logs/authmgr.%d{yyyy-MM-dd}.log</fileNamePattern>-->
    17     <!--&lt;!&ndash; 保留 30天数据,默认无限&ndash;&gt;-->
    18     <!--<maxHistory>30</maxHistory>-->
    19     <!--</rollingPolicy>-->
    20     <!-- -->
    21     <!--<encoder>-->
    22     <!--<pattern>%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>-->
    23     <!--</encoder>-->
    24     <!--</appender>-->
    25 
    26     <!-- 按文件大小滚动的策略 -->
    27     <!--<appender name="metricsLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
    28     <!--<file>/tmp/logs/metrics.log</file>-->
    29     <!-- -->
    30     <!--<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">-->
    31     <!--<fileNamePattern>/tmp/logs/metrics.%i.log</fileNamePattern>-->
    32     <!--&lt;!&ndash; 最多保留10个文件,默认是7 &ndash;&gt;-->
    33     <!--<maxIndex>10</maxIndex>-->
    34     <!--</rollingPolicy>-->
    35     <!-- -->
    36     <!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">-->
    37     <!--<maxFileSize>10MB</maxFileSize>-->
    38     <!--</triggeringPolicy>-->
    39     <!-- -->
    40     <!--<encoder>-->
    41     <!--<pattern>%msg%n</pattern>-->
    42     <!--</encoder>-->
    43     <!--</appender>-->
    44 
    45     <!-- 综合时间与大小的滚动策略,先按小时滚动,小时内的文件大于10mb时再按大小滚动 -->
    46     <appender name="logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
    47         <file>/var/log/local/xinsight/aas/aas.log</file>
    48 
    49         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    50             <fileNamePattern>/var/log/local/xinsight/aas/aas-%d{yyyy-MM-dd_HH}.%i.zip</fileNamePattern>
    51             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
    52                 <maxFileSize>10MB</maxFileSize>
    53             </timeBasedFileNamingAndTriggeringPolicy>
    54         </rollingPolicy>
    55 
    56         <encoder>
    57             <pattern>[AAS] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n</pattern>
    58         </encoder>
    59     </appender>
    84 
    85     <logger name="com.mchange" level="WARN"/>
    86     <logger name="com.service" level="DEBUG"/>
    87     <logger name="dao" level="DEBUG"/>
    88 
    89     <!-- root -->
    90     <root level="WARN">
    91         <appender-ref ref="console"/>
    93         <appender-ref ref="logFile" />
    94     </root>
    95 </configuration>

    3.6 logger和root的区别

    参考来自:http://www.cnblogs.com/cb0327/p/5759441.html

    1 logger:
    2 用来设置具体的包或类的日志打印级别。
    3 仅有一个name属性,一个可选的level和一个可选的addtivity属性。
    4 addtivity表示是否继承上级的打印级别,比如<logger name="com.service"/>将控制com.service包下的所有类的日志打印,
    但是并没用设置打印级别,所以继承他的上级<root>的日志级别“DEBUG”; 5 可以指定appender。
    6 root: 7 也是<loger>元素,但是它是根loger。 8 只有一个level属性。

    4 代码中使用

     1 import org.slf4j.Logger;
     2 import org.slf4j.LoggerFactory;
     3 
     4 public abstract class Test{
     5     protected Logger logger = LoggerFactory.getLogger(this.getClass());
     6 
     7   logger.info("info");
     8   logger.error("error", tenantName, users.size());
     9   logger.debug("debug");
    10 }
  • 相关阅读:
    poj 1061 (扩展欧几里德算法)
    字符串 (扫一遍 + 计数)
    快排 + 二分
    勾股定理
    WD
    Acmer--弱水三千,只取一瓢
    朱光潜给青年的十二封信 之 谈升学和选课
    朱光潜给青年的十二封信 之 谈读书
    小白书--求 n!
    N阶行列式---常见的几种运算
  • 原文地址:https://www.cnblogs.com/lyh421/p/7248815.html
Copyright © 2020-2023  润新知