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>