zoukankan      html  css  js  c++  java
  • logback:RollingFileAppender

    RollingFileAppender :滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件

    ps:
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration debug="true" scan="true" scanPeriod="1 seconds">

    <contextName>webA</contextName>

    <appender name="file" append="true" class="ch.qos.logback.core.rolling.RollingFileAppender">

    <file>/logs/log_file.log</file>

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>/logs/log_file_%d{yyyy-mm-dd.HH}.log</fileNamePattern>
    <maxHistory>30</maxHistory>

    <totalSizeCap>1GB</totalSizeCap>
    </rollingPolicy>

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
    <maxFileSize>100MB</maxFileSize>
    </triggeringPolicy>

    <encoder>
    <pattern>%cn%d.%M.%m%n</pattern>
    </encoder>
    </appender>

    <root level="debug">
    <appender-ref ref="file"/>
    </root>

    </configuration>

    主要节点:
    (1)file文件名,可选。若没有设定参考下面fileNamePattern名称生成文件
    (2)rollingPolicy当日志发生滚动时,决定日志文件的行为。决定文件的重命名及路径的变更。必选
    其中class属性决定出发哪套行为控制
    fileNamePattern 滚动后产生的文件名规则
    maxHistory日志保留时长,30天。超过天数后删除日志文件,同时配套目录一起删除。该参数不一定是指天数,也可以是月份数。具体参考滚动规则fileNamePattern,看是依赖什么进行滚动的
    totalSizeCap最大日志量
    (3)triggeringPolicy 滚动触发规则
    maxFileSize单个文件最大量,如果达到这个最大量。日志有可能会出现报错,新日志无法存入。

    --注意:%cn:获取上下文名称contextName。该用法是<encoder>标签的属性,只能在该标签使用。其他标签不能使用
    rollingPolicy、triggeringPolicy 有不同的class实现类,具体每个实现类的用法及参数属性会有所不同。使用时注意区分


    
    

    fileNamePattern的介绍

    
    

    /wombat/foo.%d :
    每天轮转(晚上零点)。由于省略了指定 %d 的日期格式,所以默认为 yyyy-MM-dd。

    
    

    /wombat/%d{yyyy/MM}/foo.txt:
    每个月开始的时候轮转。

    
    

    /wombat/foo.%d{yyyy-ww}.log:
    每周的第一天(取决于时区)轮转。

    
    

    /wombat/foo%d{yyyy-MM-dd_HH}.log:
    每小时轮转。

    
    

    /wombat/foo%d{yyyy-MM-dd_HH-mm}.log:
    每分钟轮转。

    
    

    /wombat/foo%d{yyyy-MM-dd_HH-mm, UTC}.log:
    每分钟轮转,时间格式为UTC。

    
    

    /foo/%d{yyyy-MM, aux}/%d.log:
    每天轮转。归档文件在包含年月的文件夹下。

    
    

    任何斜杆或者反斜杠够会被当作文件夹分隔符。任何必要的文件夹都会在有需要的时候创建。可以将日志文件放在单独的文件夹中。

    
    

    TimeBasedRollingPolicy支持文件自动压缩。如果 fileNamePattern以 .gz 或者 .zip结尾,将会启动这个特性。

    
    

    例如:/wombat/foo.%d.gz:每天轮转(晚上零点),自动将归档文件压缩成 GZIP 格式

    
    


    RollingPolicy:TimeBasedRollingPolicy,SizeAndTimeBasedRollingPolicy,FixedWindowRollingPolicy
    1、TimeBasedRollingPolicy 基于时间滚动
    官方示例:

    <configuration>
      <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logFile.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
          <!-- daily rollover -->
          <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>

    
    

          <!-- keep 30 days' worth of history capped at 3GB total size -->
          <maxHistory>30</maxHistory>
          <totalSizeCap>3GB</totalSizeCap>

    
    

        </rollingPolicy>

    
    

        <encoder>
          <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
      </appender>

    
    

      <root level="DEBUG">
        <appender-ref ref="FILE" />
      </root>
    </configuration>

    2、SizeAndTimeBasedRollingPolicy 基于时间+大小进行滚动。是对于第一种的补充。避免单个日志文件过大,不便于阅读

    <configuration>
      <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>mylog.txt</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
          <!-- rollover daily -->
          <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
           <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
           <maxFileSize>100MB</maxFileSize>   
           <maxHistory>60</maxHistory>
           <totalSizeCap>20GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
          <pattern>%msg%n</pattern>
        </encoder>
      </appender>


      <root level="DEBUG">
        <appender-ref ref="ROLLING" />
      </root>

    </configuration>

    mylog-%d{yyyy-MM-dd}.%i.txt其中的%i表示一天内滚动生成多个日志时的编码

    3、FixedWindowRollingPolicy 基于窗口滚动

    可以理解成自定义滚动规则,避免使用出现单个文件过大或者日志文件过多的情况。需要同时配置triggeringPolicy用于指定滚动触发规则

    <configuration>
      <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>test.log</file>

        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
          <fileNamePattern>tests.%i.log.zip</fileNamePattern>
          <minIndex>1</minIndex>
          <maxIndex>3</maxIndex>
        </rollingPolicy>

        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
          <maxFileSize>5MB</maxFileSize>
        </triggeringPolicy>
        <encoder>
          <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
      </appender>
           
      <root level="DEBUG">
        <appender-ref ref="FILE" />
      </root>
    </configuration>

    输出规则:越早生成名称序号越靠后。minIndex、maxIndex最小索引最大索引





    TriggeringPolicy用于通知何时触发滚动
    实现类:SizeBasedTriggeringPolicy

    SizeBasedTriggeringPolicy观察当前活动文件的大小,如果已经大于了指定的值,它会给 RollingFileAppender 发一个信号触发对当前活动文件的轮转。

    
    

    SizeBasedTriggeringPolicy 只接收 maxFileSize 这一个参数,它的默认值是 10 MB。

    
    

    maxFileSize 可以为字节,千字节,兆字节,千兆字节,通过在数值后面指定一个后缀 KB,MB 或者 GB。例如,5000000,5000KB,5MB 以及 2GB 都是有效的,前三个是一样的。

     
  • 相关阅读:
    Leetcode Excel Sheet Column Number
    AlgorithmsI PA2: Randomized Queues and Deques Subset
    AlgorithmsI PA2: Randomized Queues and Deques RandomizedQueue
    AlgorithmsI PA2: Randomized Queues and Deques Deque
    AlgorithmsI Programming Assignment 1: PercolationStats.java
    hdu多校第四场 1003 (hdu6616) Divide the Stones 机智题
    hdu多校第四场 1007 (hdu6620) Just an Old Puzzle 逆序对
    hdu多校第四场1001 (hdu6614) AND Minimum Spanning Tree 签到
    hdu多校第三场 1007 (hdu6609) Find the answer 线段树
    hdu多校第三场 1006 (hdu6608) Fansblog Miller-Rabin素性检测
  • 原文地址:https://www.cnblogs.com/jybky/p/12216615.html
Copyright © 2011-2022 走看看