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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM