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 都是有效的,前三个是一样的。

     
  • 相关阅读:
    Eclipse插件安装方法大全
    Weblogic web应用中获取文件的绝对路径
    Weblogic 设置优先引用web项目的jar包
    Oracle 数据库创建(图形界面操作)
    Java 输入输出流总结
    如何获取项目中文件的路径
    EclEmma安装与使用
    单向链表

    散列表
  • 原文地址:https://www.cnblogs.com/jybky/p/12216615.html
Copyright © 2011-2022 走看看