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>
  • 相关阅读:
    轻量级数据库sqlite的使用
    Integer引发的思考
    css限制显示行数
    数据库 chapter 17 数据仓库与联机分析处理技术
    数据库 chapter 15 对象关系数据库系统
    数据库 chapter 16 XML数据库
    数据库 chapter 14 分布式数据库系统
    数据库 chapter 11 并发控制
    数据库 chapter 12 数据库管理系统
    数据库 chapter 13 数据库技术新发展
  • 原文地址:https://www.cnblogs.com/sidesky/p/11354355.html
Copyright © 2011-2022 走看看