zoukankan      html  css  js  c++  java
  • 关于日志slf4j+logback&logback.xml配置

    1.maven依赖

    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
        <!--    <dependency>
              <groupId>org.slf4j</groupId>
              <artifactId>slf4j-api</artifactId>
              <version>1.7.25</version>
            </dependency>-->
        <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
            <dependency>
              <groupId>ch.qos.logback</groupId>
              <artifactId>logback-classic</artifactId>
              <version>1.2.3</version>
        <!--   <scope>test</scope>-->
            </dependency>
        <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-core -->
         <!--  <dependency>
              <groupId>ch.qos.logback</groupId>
              <artifactId>logback-core</artifactId>
              <version>1.2.3</version>
            </dependency>-->
        <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-access -->
            <dependency>
              <groupId>ch.qos.logback</groupId>
              <artifactId>logback-access</artifactId>
              <version>1.2.3</version>
            </dependency>
    

    2.logback.xml

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration debug="false">
    
        <!--设置日志上下文名称,后面输出格式中可以通过定义 %contextName 来打印日志上下文名称-->
        <contextName>sk-log</contextName>
        <!--用来设置相关变量,通过key-value的方式配置,然后在后面的配置文件中通过 ${key}来访问-->
        <property name = "sk.name" value ="test"></property>
    
        <!--======================================ConsoleAppender===================================================================-->
        <!--日志输出组件,主要负责日志的输出以及格式化日志。  stdout:标准输出-->
        <appender name ="stdout" class="ch.qos.logback.core.ConsoleAppender">
            <!--定义了一个过滤器,在LEVEL之下的日志输出不会被打印出来   这个和logger里的level共同决定在stdout输出的级别(filter非必需的)
              临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝。 -->
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>debug</level>
            </filter>
            <!--级别过滤器,根据日志级别进行过滤。如果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志
            <level>:设置过滤级别
            <onMatch>:用于配置符合过滤条件的操作
            <onMismatch>:用于配置不符合过滤条件的操作-->
    <!--        <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
    <!--            <level>debug</level>-->
    <!--            <onMatch>ACCEPT</onMatch>-->
    <!--            <onMismatch>DENY</onMismatch>-->
    <!--        </filter>-->
            <!-- encoder 默认配置为PatternLayoutEncoder -->
            <!--定义控制台输出格式-->
            <!--
                %d{yyyy-MM-dd  HH:mm:ss} 时间格式 hh是12h制  HH是24h制
                [%thread]      线程
                %-5level       级别
                %logger{36}    日志包     36包长度
                [%file : %line]   目标类  和  行数
                %msg           log信息
                %n              换行
                (encoder必需的)-->
            <encoder>
                <pattern>%d{yyyy-MM-dd  HH:mm:ss} [%thread] %-5level %logger{36} [%file : %line] - %msg%n</pattern>
            </encoder>
        </appender>
    
        <!--==========================RollingFileAppender===============================================================================-->
    
            <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
    
                <!--如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true
                but 我加了之后 警告 Append mode is mandatory for RollingFileAppender. Defaulting to append=true. 我还是不加了-->
    <!--            <append>false</append>-->
    
                <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                    <level>trace</level>
                </filter>
                    <!--rollingPolicy没写的话 会有警告 No TriggeringPolicy was set for the RollingFileAppender named file 没有输出本地文件-->
                <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                    <fileNamePattern>E:/logDemo1/${sk.name}.log.%i.%d{yyyy-MM-dd}</fileNamePattern>
                    <!--30d周期-->
                    <maxHistory>30</maxHistory>
                    <!--每个文件最大10M-->
                    <maxFileSize>10MB</maxFileSize>
                </rollingPolicy>
    
                <encoder>
                    <pattern>%d{yyyy-MM-dd  HH:mm:ss} [%thread] %-5level %logger{36} [%file : %line] - %msg%n</pattern>
                </encoder>
            </appender>
    
        <!--=========================================================================================================-->
    
        <!--root是默认的logger 这里没设定输出级别-->
        <root>
            <!--定义了appender,日志会通过往appender里面写-->
            <appender-ref ref="stdout"/>
            <appender-ref ref="file"/>
        </root>
    
        <!--==================================指定包的日志======================================================-->
        <!--这个logger没有指定appender,它会继承root节点中定义的那些appender     -->
        <logger name="com.sk" level="info">
        <!-- <appender-ref ref="stdout"/>-->
        </logger>
    
        <!--通过 LoggerFactory.getLogger("Test3") 可以获取到这个logger
            additivity="false" 没有它  输出双倍   自身的和继承的root的appender-->
        <logger name="Test3" level="trace" additivity="false">
            <appender-ref ref="stdout"/>
            <appender-ref ref="file"/>
        </logger>
    
        <!--由于设置了 additivity="false" ,所以输出时不会使用rootLogger的appender-->
        <!--但是这个logger本身又没有配置appender,所以使用这个logger输出日志的话就不会输出到任何地方-->
    <!--    <logger name="Test3" level="trace" additivity="false"></logger>-->
    
    </configuration>
    

      在idea上的截图。。。(长截图真好)

     3.Test

  • 相关阅读:
    SOA概念误解实施要点
    Visual Studio 2008 和 .NET Framework 3.5 Service Pack 1 Beta 发布
    【翻译】使用LINQ来简化编程的7个技巧
    我对SOA的认识以及心得
    《SQL Server 2005范例代码查询辞典》出版
    Security Tutorials系列文章以及AJAX系列文章
    代朋友发招聘信息,C++程序员
    二叉树相关算法
    最近项目的一些心得(纯贴代码)
    大型互联网网站架构心得之一:分
  • 原文地址:https://www.cnblogs.com/songxiaoke/p/11484383.html
Copyright © 2011-2022 走看看