• Logback配置异步输出日志


        为了加快程序的响应,日志异步打印是很有必要的。这里贴一个配置异步日志的xml,方便后续查阅

    一、原理

        logback的异步打印日志,原理就是用了一个阻塞队列来缓冲。具体可以参考源码ch.qos.logback.core.AsyncAppenderBase
            

    二、参数说明

        1. queueSize队列大小,默认256
        2. discardingThreshold,默认为-1,当队列还有20%容量时,会丢弃日志(这里指info及以下级别才会丢弃),设置为 0 可以不丢弃
            
            

        3. includeCallerData是否提取调用者信息,默认为false,一般不用配置
            4. neverBlock当队列满了后是阻塞线程还是丢日志,默认是false,阻塞线程,这里要注意一下

    三、贴个配置

    这个配置很简单,套路如下:
        1. 配置一个正常的appender
        2. 配置一个异步appender,ref指向上面的那个appender
        3. 配置logger使用异步appender
    本质就是用异步appender来包装了一次;可以参考下面配置文件
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!--用户行为日志-->
    <included>
        <springProperty scope="context" name="ACTION_LOG_HOME" source="ACTION_LOG_HOME" defaultValue="logs"/>
        <springProperty scope="context" name="ACTION_LOG_HOME_EXT" source="ACTION_LOG_HOME_EXT" defaultValue="action"/>
        <springProperty scope="context" name="ACTION_MAX_FILE_SIZE" source="ACTION_MAX_FILE_SIZE" defaultValue="1GB"/>
        <springProperty scope="context" name="ACTION_LOG_FILE_MAX_HISTORY" source="ACTION_LOG_FILE_MAX_HISTORY" defaultValue="7"/>
    
        <!--日志appender-->
        <appender name="ACTION_LOG_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!--自定义输出格式-->
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>${ACTION_PATTERN:-%msg%n}</pattern>
            </encoder>
            <!--默认生成的日志文件名字-->
            <file>${ACTION_LOG_HOME}/${ACTION_LOG_HOME_EXT}/actionLog.log</file>
    
            <!--文件超出大小后的处理-->
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <fileNamePattern>${ACTION_LOG_HOME}/${ACTION_LOG_HOME_EXT}/actionLog.log.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
                <!-- each file should be at most 300MB, keep 15 days worth of history, but at most 20GB -->
                <maxFileSize>${ACTION_MAX_FILE_SIZE}</maxFileSize>
                <!--保留15天-->
                <maxHistory>${ACTION_LOG_FILE_MAX_HISTORY}</maxHistory>
                <totalSizeCap>30GB</totalSizeCap>
            </rollingPolicy>
        </appender>
    
        <!--异步输出 appender-->
        <appender name="ACTION_LOG_APPENDER_ASYNC" class="ch.qos.logback.classic.AsyncAppender">
            <discardingThreshold>0</discardingThreshold>
            <neverBlock>true</neverBlock>
            <!-- 队列的最大容量,该值会影响性能.默认值为256 -->
    
            <queueSize>1024</queueSize>
            <!-- 队列剩余容量小于discardingThreshold,则会丢弃TRACT、DEBUG、INFO级别的日志;默认值-1,为queueSize的20%;0不丢失日志 -->
            <discardingThreshold>0</discardingThreshold>
    
            <!-- 队列满了,是否阻塞,默认为false;如果配置为true,则队列满了就丢弃日志; -->
            <neverBlock>false</neverBlock>
    
            <!-- 添加附加的appender,最多只能添加一个 -->
            <appender-ref ref="ACTION_LOG_APPENDER"/>
        </appender>
    
        <!--配置logger,指向异步appender-->
        <logger name="com.cybermax.manager.log.printer" additivity="false" level="info">
            <appender-ref ref="ACTION_LOG_APPENDER_ASYNC"/>
        </logger>
    
    </included>

    四、参考链接

        1. 官网 https://logback.qos.ch/manual/appenders.html

  • 相关阅读:
    KMP算法的Next数组详解(转)
    公开封尘已久的即时通讯源码(转)
    《C语言编写 学生成绩管理系统》
    随想录(从编程语言到库、框架、软件)
    Effective Objective-C 2.0 笔记三(Literal Syntax简写语法)
    Java Swing 探索(一)LayoutManager
    Codeforces Round #FF 446 C. DZY Loves Fibonacci Numbers
    ARM体系结构与编程
    div:给div加滚动栏 div的滚动栏设置
    DS18B20
  • 原文地址:https://www.cnblogs.com/zeng1994/p/019851ef3e2f14e2403e5174c25e3d24.html
Copyright © 2020-2023  润新知