如何在 log4j2 中设置 Async Logger 和 Async Appender 的线程数?默认使用一个线程吗?
我尝试运行一批 100,000 条记录,但我没有看到使用 system.out.print 显示的最后一个日志语句时间和应用程序退出的结束时间戳有任何差异。我如何证明这是异步日志记录?
<RollingFile name="APP.ALERT" fileName="C:\Users\sbasheer\Downloads\abc\Alert.log"
filePattern="C:\Users\sbasheer\Downloads\abc\Alert%d{MM-dd-yyyy}-%i.log" immediateFlush="true" append="true">
<PatternLayout>
<Pattern>%d %p %class{1.} [%t] %location %m %ex%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="25 MB"/>
</Policies>
<DefaultRolloverStrategy max="50"/>
</RollingFile>
<AsyncLogger name="com.abc.asyncsample" level="trace" includeLocation="true" additivity="true">
<AppenderRef ref="APP.ALERT" level="error" />
</AsyncLogger>
Run Code Online (Sandbox Code Playgroud) 我需要登录log4j2,如下所示:
14:28:00.404 app_name ="splunk sample app"method_name = main desc ="sample log"
<PatternLayout pattern="%d app_name=\"%X{app_name}\" method_name=%M(%L) %m %n"/>
Run Code Online (Sandbox Code Playgroud)
由于双引号,模式失败.double quate的转义字符是什么,因此键值对的值在日志中的双引号内.
ThreadContext.put("app_name", "splunk sample app");
Run Code Online (Sandbox Code Playgroud) 我需要创建具有键值对的日志,如下所示.在PatternLayout中是否支持使用log4j2.xml为log_level,class_name,event_id等线程中的静态字段执行此操作.
样本日志:
2014年6月18日11:57:46719 LOG_LEVEL = "INFO" CLASS_NAME = "com.abc.dgl.App:main(158)" 名称= "应用程序启动事件" 事项标识="b88f7ea0-4cb1-438f-A728-ac7c2bdac578 "程序="测试应用程序"严重性='信息’行动='稳定部队加载文件处理’DESC ='道具被读取并加载’结果='成功’的原因='ABC’TRANSACTION_ID =" b88f7ea0-4cb1-438f-a728- ac7c2bdac578"