log4j2 对定时异步线程打印的日志进行过滤
log4j2的过滤器有:
官网:Log4j – Log4j Filters (apache.org)
本次不使用自定义的过滤器,使用ScriptFilter对logevent对象中的线程名称进行过滤。
具体修改如下:
<!--控制台--><Console name="Console" target="SYSTEM_OUT"><PatternLayoutpattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level %X{TRACE_ID} [%thread] %class - %message%n"/><Filters><ThreadContextMapFilter key="isFilteredThread" value="true" onMatch="DENY" onMismatch="ACCEPT"/><!-- 脚本拦截器(判断是否输出定时任务日志,定时任务老刷日志很烦!!当前配置为不拦截,需要拦截请将注释放开 ) --><ScriptFilter onMatch="DENY" onMisMatch="NEUTRAL"><Script name="threadFilter" language="javascript"><![CDATA[var dd ;if(typeof logEvent !== 'undefined'){var threadName = logEvent.getThreadName();dd = threadName.indexOf("AbsBatJobSchedule_QuartzSchedulerThread") > -1 || threadName.indexOf("QuartzScheduler_AbsBatJobSchedule") > -1;}dd;]]></Script></ScriptFilter></Filters></Console>
注意:log4j2.19.0在使用scriptFilter时,需要开启scriptManager
开启文件有要求:文件名必须是:log4j2.component.properties
内容:
log4j2.Script.enableLanguages=javascript
放置位置: