zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    Proj THUDBFuzz Paper Reading: PMFuzz: Test Case Generation for Persistent Memory Programs
    入围 WF 后训练记
    算法竞赛历程
    2021 多校 杭电 第十场
    2021 多校 杭电 第九场
    2021 多校 牛客 第十场
    2021 多校 牛客 第九场
    2021 多校 杭电 第八场
    2021 多校 杭电 第六场
    2021 多校 杭电 第七场
  • 原文地址:https://www.cnblogs.com/lyh421/p/7248815.html
Copyright © 2011-2022 走看看