• RollingFileAppender


    http://logback.qos.ch/manual/appenders.html#RollingFileAppender

    1.基于时间的滚动策略

     TimeBasedRollingPolicy

    就好比一个小车,推着走。车身所压的时间就是要保留日志的时间。

    <configuration>
        <appender name="FILE"
            class="ch.qos.logback.core.rolling.RollingFileAppender">
    
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- daily rollover -->
                <fileNamePattern>${catalina.base}/logs/${CONTEXT_NAME}/%d{yyyy-MM-dd}/logFile.%d{yyyy-MM-dd}.log
                </fileNamePattern>
                <!-- keep 30 days' worth of history -->
                <maxHistory>30</maxHistory>
            </rollingPolicy>
    
            <encoder>
                <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n
                </pattern>
            </encoder>
        </appender>
    
        <root level="DEBUG">
            <appender-ref ref="FILE" />
        </root>
    </configuration>

    2.基于大小和时间的文件命名和触发策略

    http://logback.qos.ch/manual/appenders.html#SizeAndTimeBasedFNATP

    FNATP means File Naming And Triggering Policy

    达到最大值便压缩;可根据每天时间变化生成文件夹。

    可以设置两个rolling :INFO 和 ERROR .

    <configuration>
      <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
          <!-- rollover daily -->
          <fileNamePattern>${catalina.base}/logs/${CONTEXT_NAME}/%d{yyyy-MM-dd}/mylog-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
          <timeBasedFileNamingAndTriggeringPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <!-- or whenever the file size reaches 100MB -->
            <maxFileSize>1mb</maxFileSize>
          </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
          <pattern>%msg%n</pattern>
        </encoder>
      </appender>
    
    
      <root level="DEBUG">
        <appender-ref ref="ROLLING" />
      </root>
    
    </configuration>

    由以下代码可知,不加单位为byte, 单位只能加kb、mb、gb ,不区分大小写。 

     if (unitStr.equalsIgnoreCase("")) {
            coefficient = 1;
          } else if (unitStr.equalsIgnoreCase("kb")) {
            coefficient = KB_COEFFICIENT;
          } else if (unitStr.equalsIgnoreCase("mb")) {
            coefficient = MB_COEFFICIENT;
          } else if (unitStr.equalsIgnoreCase("gb")) {
            coefficient = GB_COEFFICIENT;
          } else {
            throw new IllegalStateException("Unexpected " + unitStr);
          }
          return new FileSize(lenValue * coefficient);

    注:1、 2 策略不能混用,因为不能同时生效

    -------------------- 20190606 补充 -----------

         <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <!-- daily rollover -->
                <fileNamePattern>D://data/fix.%d{yyyy-MM-dd-HH-mm}.%i.log.gz
                </fileNamePattern>
                <!-- 保留30(时间单位) -->
                <maxHistory>30</maxHistory>
                <!-- 单个文件最大 -->
                <maxFileSize>20MB</maxFileSize>
                <!-- 压缩后的fix文件总量,必须大于maxFileSize -->
                <totalSizeCap>20MB</totalSizeCap>
            </rollingPolicy>
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread]%-5level%logger{50} - %msg%n</pattern>
            </encoder>
        </appender>

    https://logback.qos.ch/manual/appenders.html

        /**
         * Given the FileNamePattern string, this method determines the compression
         * mode depending on last letters of the fileNamePatternStr. Patterns ending
         * with .gz imply GZIP compression, endings with '.zip' imply ZIP compression.
         * Otherwise and by default, there is no compression.
         * 
         */
        protected void determineCompressionMode() {
            if (fileNamePatternStr.endsWith(".gz")) {
                addInfo("Will use gz compression");
                compressionMode = CompressionMode.GZ;
            } else if (fileNamePatternStr.endsWith(".zip")) {
                addInfo("Will use zip compression");
                compressionMode = CompressionMode.ZIP;
            } else {
                addInfo("No compression will be used");
                compressionMode = CompressionMode.NONE;
            }
        }

    %d 按时间命名 i% 在之前基础上命名 以gz结尾就是gzip压缩

  • 相关阅读:
    flutter item列表左右滑动带出按钮选项
    flutter之Dismissible组件
    mac下最好用的抓包工具--charles简单操作教程
    flutter 开起charles抓包代理
    nodejs querystring模块
    node.js 中使用 Mongodb
    MongoDB 的高级查询 aggregate 聚合管道
    Mongodb 关系型数据库表(集合)与表(集合)之 间的几种关系
    Mongodb 的使用以及 Mongodb 账户权 限配置
    MongoDb 大数据查询优化、 MongoDB 索引、复合索引、唯一索引、 explain 分 析查询速度
  • 原文地址:https://www.cnblogs.com/zno2/p/4795445.html
Copyright © 2020-2023  润新知