logback使用理解

仅供自己理解,可能不对,自我掌握

  1. 昨天使用logback对日志进行分离,以前也有logback,但是只能生成一个大的,后来增加了很多socket接收数据问题,很大了,需要分开
  2. 写下logback的认识,官网 http://logback.qos.ch/documentation.html
  3. logback主要分为3个部分 configuration appender  logger  root

3.1)configuration应该可以说是一个根目录了 主要有2个属性 scan scanPeriod

Scan=”true”是否扫描,是  scanPeriod=”60 seconds”:扫描频率 60秒一扫描

3.2)appender: 他有2个属性  name  class

Name是给这个appender起个名字  class则是使用哪个类进行日志增加

ch.qos.logback.core.ConsoleAppender  这个是打印到控制台 类似System.out.println

ch.qos.logback.core.FileAppender  输出到文件

ch.qos.logback.core.rolling.RollingFileAppender  rolling滚动意思 这个是滚动输出日志的意思

ch.qos.logback.classic.sift.SiftingAppender  分割日志的意思

3.3)logger

Logger就2个属性一个指向  name   level   appender-ref

Name:在logger的意思跟其它的name的意思不一样,这里指的是使用日志的java中的类或者包的路径  level指的是日志级别 debug info error等  

<appender-ref ref=”appendername”/> 它指向使用哪个appender  应该可以理解为这个类或者这个包下使用哪个appender

3.4)root 其实就是logger 只不过是根logger

3.5)重点讲下SiftingAppender  分割日志

在我们自己的类中写入 org.slf4j.MDC.put(“userid”,userid);

Logger.info(“this is test siftingappender”);

org.slf4j.MDC.remove(“userid”);

注意这里的是slf4j的mdc而不是其他的mdc

 

SiftingAppender  他下面有个子节点discriminator(辨别)discriminator  下有2个子节点key和defaultValue 其实就是定义与MDC关联的变量key=userid      defaultValue需要我们随便给个值,不过最好是有意义的

  SiftingAppender  下有个sift字节点这个子节点可以按照appender进行配置

3.6)RollingFileAppender  我们一般使用这个类

<appender name="mdcfilelog" class="ch.qos.logback.classic.sift.SiftingAppender">

<discriminator>

      <key>companyname</key>

      <defaultValue>xiaomi</defaultValue>

    </discriminator>

    <sift>

      <appender name="FILE-${companyname}" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <file>${companyname}.log</file>  这个是我们生成的文件名称mdc对应不同的公司名称

        <append>true</append> 日志都是不断追加

        <layout class="ch.qos.logback.classic.PatternLayout">

          <pattern>%d [%thread] %level %mdc %logger{35} - %msg%n</pattern>  日志文件格式

        </layout>

         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 使用按时间滚动模式

     <FileNamePattern>${companyname}_%d{yyyy-MM-dd}.log</FileNamePattern> 这里按天

<!--日志文件保留天数 -->

<MaxHistory>30</MaxHistory> 最大保存30天

    </rollingPolicy>

      </appender>

    </sift>

</appender>

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds">
    
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default 控制台展示 -->
        <encoder>
          <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    
    <appender name="rollfilelog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>rollfile.log</File>
        <append>true</append>
        <encoder>
          <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>rollfile_%d{yyyy-MM-dd}.log</FileNamePattern>
                    <!--日志文件保留天数 -->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
    </appender>
    
    <appender name="mdcfilelog" class="ch.qos.logback.classic.sift.SiftingAppender">
        <discriminator>
          <key>companyname</key>
          <defaultValue>xiaomi</defaultValue>
        </discriminator>
        <sift>
      <appender name="FILE-${companyname}" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${companyname}.log</file>
        <append>true</append>
        <layout class="ch.qos.logback.classic.PatternLayout">
          <pattern>%d [%thread] %level %mdc %logger{35} - %msg%n</pattern>
        </layout>
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${companyname}_%d{yyyy-MM-dd}.log</FileNamePattern>
                    <!--日志文件保留天数 -->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
      </appender>
    </sift>
    </appender>
    
    <appender name="SIFTTASK" class="ch.qos.logback.classic.sift.SiftingAppender">
        <!--discriminator鉴别器,根据taskId这个key对应的value鉴别日志事件,然后委托给具体appender写日志-->
        <discriminator>
            <key>taskId</key>
            <defaultValue>default</defaultValue>
        </discriminator>
        <sift>
            <!--具体的写日志appender,每一个taskId创建一个文件-->
            <appender name="File-${taskId}" class="ch.qos.logback.core.FileAppender">
                <file>d:/log/${taskId}/info.log</file>
                <append>true</append>
                <encoder charset="UTF-8">
                    <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] %-5level %logger{35} - %msg%n</pattern>
                </encoder>
            </appender>
        </sift>
    </appender>

    <!--应用于该包路径的日志-->
    <logger name="com.wang.logback.task" level="INFO">
        <appender-ref ref="SIFTTASK"/>
    </logger>
    
    
    <logger name="com.wang.logback.file" level="debug" additivity="fasle"  >
        <appender-ref ref="rollfilelog"></appender-ref>
    </logger>
    
    <logger name="com.wang.logback.mdc" level="debug" additivity="fasle"  >
        <appender-ref ref="mdcfilelog"></appender-ref>
    </logger>
    <root devel="debug">
        <appender-ref ref="STDOUT" />
        
    </root>
</configuration>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值