cha*_*uru 2 logging logback rollingfileappender appender log4j2
我在其中添加了自己的SUMMARY_APPENDER,创建了一个AsyncAppender.
ASYNC Appender如下
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>2</discardingThreshold>
<appender-ref ref="SUMMARY_APPENDER" />
<!-- <appender-ref ref="PROCESSING" /> -->
</appender>
Run Code Online (Sandbox Code Playgroud)
我创建了另一个SUMMARY_APPENDER
<appender name="SUMMARY_APPENDER"
class="com.my.test.logger.async.MyRollingAppender">
<file>./logs/summary.log</file>
<rollingPolicy class="com.my.test.logger.async.MyTimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>./logs/%d{yyyy-MM-dd,aux}/summary.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<TimeBasedFileNamingAndTriggeringPolicy
class="com.my.test.logger.async.MySizeTimeBasedPolicy">
<maxFileSize>10MB</maxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>
%d{ISO8601} [%t] %p %c %L - %m%n
</pattern>
</encoder>
</appender>
Run Code Online (Sandbox Code Playgroud)
RollingPolicy由我的Custom Appenders正确扩展.
我已将其导出为带有logback.xml的自定义jar.
我将它添加到新java项目的classpath中.
程序如下,我创建了TestLogger1,2 ... 5并运行它们.
public class TestingLogger {
private static Logger log = LoggerFactory.getLogger(TestingLogger.class);
public static void main(String[] args) {
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
StatusPrinter.print(lc);
for (int i = 1; i < 100000; i++) {
log.debug(" Testing Logger " + i);
}
}
}
Run Code Online (Sandbox Code Playgroud)
每个Logger都有0.1万个日志,所以最后我预计会有0.5万个日志
请帮助我了解如何同步日志记录,并让我知道如果我做错了什么.
小智 7
从手册:
discardingThreshold
默认情况下,当阻塞队列剩余20%的容量时,它将丢弃级别TRACE,DEBUG和INFO的事件,仅保留级别WARN和ERROR的事件.要保留所有事件,请将discardingThreshold设置为0.
因此,在配置中将此属性从2设置为0,您应该看到所有消息都到达日志文件中.
| 归档时间: |
|
| 查看次数: |
5747 次 |
| 最近记录: |