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>
logback&log4j异步日志配置的更多相关文章
- log4xx/log4j异步日志配置示例
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration S ...
- log4j 异步日志问题分析
1. 常用的DailyRollingFileAppender与RollingFileAppender是否同步? 1.1 代码分析 2. log4j 1.2.x提供了异步appender是什么?Asyn ...
- logback.xml解读----日志配置解读
初次接触javaweb项目的日志是log4j文件,但是后来发现通过配置logback.xml文件实现日志输出非常好用.经过上午的学习,现总结如下: 直接上配置文件和注释: <?xml versi ...
- log4j2异步日志配置及官方文档的问题澄清
配置及demo 方法一全部打开 加启动参数 -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextS ...
- Java log4j slf4j 日志配置笔记
http://www.cnblogs.com/Scott007/p/3269018.html 日志的打印,在程序中是必不可少的,如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender, ...
- log4j打印日志配置
1.所需的jar包 <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifa ...
- Spring Boot中实现logback多环境日志配置
在Spring Boot中,可以在logback.xml中的springProfile标签中定义多个环境logback.xml: <springProfile name="produc ...
- logback条件日志配置
logback支持条件日志配置,支持在测试环境和正式环境使用不同的参数启用不同的日志配置,从而避免手动修改日志配置文件.项目除了引入logback的包以外,还需要引入构件org.codehaus.ja ...
- (转)log4j(六)——log4j.properties简单配置样例说明
一:测试环境与log4j(一)——为什么要使用log4j?一样,这里不再重述 1 老规矩,先来个栗子,然后再聊聊感受 (1)使用配文件的方式,是不是感觉非常的清爽,如果不在程序中读取配置文件就更加的清 ...
随机推荐
- DVWA-基于布尔值的盲注与基于时间的盲注学习笔记
DVWA-基于布尔值的盲注与基于时间的盲注学习笔记 基于布尔值的盲注 一.DVWA分析 将DVWA的级别设置为low 1.分析源码,可以看到对参数没有做任何过滤,但对sql语句查询的返回的结果做了改变 ...
- HTML教程详解
HTML学习笔记 目录 一.html简介 1.html是什么? 2.html能做什么(html的作用)? 3.html书写规范 二.html基本标签 1.标签的语法 2.标签的分类 3.常用标签: 1 ...
- 基于Spark的电影推荐系统(推荐系统~7)
基于Spark的电影推荐系统(推荐系统~7) 22/100 发布文章 liuge36 第四部分-推荐系统-实时推荐 本模块基于第4节得到的模型,开始为用户做实时推荐,推荐用户最有可能喜爱的5部电影. ...
- 第五篇 openvslam建图与优化模块梳理
建图模块 mapping_module在初始化系统的时候进行实例化,在构建实例的时候会实例化local_map_cleaner和local_bundle_adjuster.系统启动的时候会在另外一个线 ...
- UWP使用TreeView
这个帖子本来是不想写的,但是感觉网上类似的也没有,对于小白可能有点用,于是想着还是写一下吧. 写之前想说下,UWP其实并没有死掉,对于win10来说,以后的新设备肯定是支持UWP的,而且微软一直在完善 ...
- Python笔记:threading(多线程操作)
Python的线程操作在旧版本中使用的是thread模块,在Python27和Python3中引入了threading模块,同时thread模块在Python3中改名为_thread模块,thread ...
- Restful API接口规范
1. 域名 应该尽量将API部署在专用域名之下. https://api.example.com 如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下. https://example.org ...
- 英语chrismatite黄蜡石chrismatite单词
黄蜡石chrismatite的原岩均为硅质岩,各种原岩受到构造变动.火山活动.热液作用等影响,产生复杂的物理和化学变化,包括重结晶.热变质等,导致矿物成分及结构构造的变化,后受构造变动的影响,岩石露出 ...
- bat延迟执行脚本,利用choice实现定时执行功能
choice是选择语句,具体语法另外再讲.今天利用它来实现定时执行功能.废话少说直接上代码: 示例一: @echo off for %%a in (我 是 一 个 中 国 人) do ping -n ...
- 使用Lambda解决_inbound_nodes错误
Keras出现了下面的错误: AttributeError: 'NoneType' object has no attribute '_inbound_nodes' 原因是使用了Keras backe ...