zoukankan      html  css  js  c++  java
  • logback&log4j异步日志配置

    logback
    原始配置
    
    
    配置 appender,  控制文件的滚动方式,日志的输出格式。
     <appender name="method-time-appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${saipan.logger.home}/method_profiling.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- daily rollover -->
                <fileNamePattern>${saipan.logger.home}/method_profiling.log.%d{yyyy-MM-dd}-%i
                </fileNamePattern>
                <!-- keep 7 days' worth of history -->
                <maxHistory>7</maxHistory>
                <timeBasedFileNamingAndTriggeringPolicy
                        class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>1GB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <encoder charset="utf-8">
                <pattern>%d{HH:mm:ss} - %msg%n</pattern>
            </encoder>
        </appender>
    
    配置logger, 指向上面的appender
    <logger name="method_profiling" additivity="false">
            <level value="info"/>
            <appender-ref ref="method-time-appender"/>
    </logger>
    修改为如下的配置
    
    修改配置appender,
        <appender name="method-time-appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${saipan.logger.home}/method_profiling.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- daily rollover -->
                <fileNamePattern>${saipan.logger.home}/method_profiling.log.%d{yyyy-MM-dd}-%i
                </fileNamePattern>
                <!-- keep 7 days' worth of history -->
                <maxHistory>7</maxHistory>
                <timeBasedFileNamingAndTriggeringPolicy
                        class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>1GB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
            <encoder charset="utf-8">
                <pattern>%d{HH:mm:ss} - %msg%n</pattern>
            </encoder>
        </appender>
    
    其次配置一个异步的append, 并指向上面的appender
        <appender name="ASYNC-METHOD-TIME-APPENDER" class="ch.qos.logback.classic.AsyncAppender">
            <!--内部实现是一个有界ArrayBlockingQueue,queueSize是队列大小。该值会影响性能.默认值为256-->
            <queueSize>512</queueSize>
            <!--当队列的剩余容量小于这个阈值并且当前日志level TRACE, DEBUG or INFO,则丢弃这些日志。默认为queueSize大小的20%。-->
            <discardingThreshold>0</discardingThreshold>
            <!--neverBlock=true则写日志队列时候会调用阻塞队列的offer方法而不是put,如果队列满则直接返回,而不是阻塞,即日志被丢弃。-->
            <neverBlock>true</neverBlock>
            <!--实际负责写日志的appender,最多只能添加一个-->
            <appender-ref ref="method-time-appender" />
        </appender>
    
    配置logger, 指向异步的appender.
        <logger name="method_profiling" additivity="false">
            <level value="info"/>
            <appender-ref ref="ASYNC-METHOD-TIME-APPENDER"/>
        </logger>
    log4j

    如果是使用org.apache.log4j.DailyRollingFileAppender 来配置,那你的配置可能是这样的的。
    <!-- 日志输出到文件,可以配置多久产生一个新的日志信息文件 --> <appender name="dailyRollingAppender" class="org.apache.log4j.DailyRollingFileAppender"> <!-- 文件文件全路径名 --> <param name="File" value="/data/applogs/own/dailyRollingAppender.log"/> <param name="Append" value="true" /> <!-- 设置日志备份频率,默认:为每天一个日志文件 --> <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" /> <!--每分钟一个备份--> <!--<param name="DatePattern" value="'.'yyyy-MM-dd-HH-mm'.log'" />--> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%p][%d{HH:mm:ss SSS}][%c]-[%m]%n"/> </layout> </appender> 和logback一样,在logger和appender之间增加 AsyncAppender 配置。 <appender name="SYSTEM" class="com.alibaba.common.logging.spi.log4j.DailyRollingFileAppender"> <param name="file" value="${relationplatform.logging.root}/relationplatform-sys.log"/> <param name="append" value="true"/> <param name="encoding" value="GBK"/> <param name="threshold" value="WARN"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%p]%d{yyyy-MM-dd HH:mm:ss,SSS} %C.%M(%L)| %m%n"/> </layout> </appender> <appender name="ASYNC-SYSTEM" class="org.apache.log4j.AsyncAppender"> <!--内部实现是一个列表,BufferSize是列表大小。该值会影响性能.默认值为128--> <param name="BufferSize" value="512" /> <!--Blocking=false则写日志队列满时候不会阻塞调用线程。默认是true--> <param name="Blocking" value="false" /> <param name="locationInfo" value="true"/> <appender-ref ref="SYSTEM" /> </appender> <logger name="RELATION_PLATFORM_SERIOUS_LOG" additivity="false"> <level value="${relationplatform.loggingLevel}"/> <appender-ref ref="ASYNC-SYSTEM"/> </logger>
  • 相关阅读:
    Ngui使用随心记
    Ngui分辨率适配
    最大堆(优先队列)
    循环队列 & 栈的共用空间
    C#顺序表 & 单向链表(无头)
    IntelliJ Idea 常用快捷键列表
    写增删改查遇到的小问题总结
    用JS解决html页面间获取context-path问题
    html 页面如何获得url中的参数
    @RequestBody和@RequestParam区别
  • 原文地址:https://www.cnblogs.com/sidesky/p/11354355.html
Copyright © 2011-2022 走看看