如何解决异步log4j2中的位置信息打印问题
很多新手对于如何解决异步log4j2中的位置信息打印问题不是很清楚。为了帮助大家解决这个问题,下面小编就详细讲解一下。有需要的人可以从中学习,希望你能有所收获。
00-1010背景:项目改造过程中,log4j2改为异步,发现没有打印行号,于是剥离了公文,大致表述如下:
先说说如何解决这个问题,然后再稍微扩展一下其他配置。有兴趣的可以往下看或者翻看官方文件。
1.可加性:该属性表示是否需要打印该记录仪继承的父记录仪;如果为假,则只打印当前记录仪;如果为真,则继续将记录器的前一层打印到根目录。
2.打印两个错误日志:一个在info.log中(即info包含信息和错误日志),一个在error.log中(仅错误日志)。这样做的优点是,可以根据错误日志出现的上下文快速定位程序错误的位置。该功能需要通过使用过滤器来实现,例如:
如果使用AsyncLoggerContextSelector来实现完全异步,那么在配置中应该使用root和logger。如果配置了这个属性,并且使用了asyncRoot和asyncLogger,那么程序将生成两个线程:日志数据首先传输到线程A,然后线程A传输到线程B,最后输出到磁盘。这是可行的,但是中间有一个额外的线程交互步骤,这是不必要的。
默认情况下,异步记录器不会将位置信息传递给输入/输出线程。如果您的布局或自定义过滤器需要位置信息,您需要在所有相关记录器(包括根记录器)的配置中设置“includeLocation=true”。
它比同步记录器慢1.3到5倍,同步记录器会尽可能长时间等待,然后拍摄堆栈快照,如果不需要该位置,快照将永远不会被捕获。
阅读以上内容对你有帮助吗?如果您想了解更多相关知识或阅读更多相关文章,请关注行业资讯频道,感谢您的支持。
网友转载外烟请保留链接:本文链接如何解决异步log4j2中的位置信息打印问题,http://fiows.com/lunwenfenxiang/49688.html谢谢合作!
相关阅读:
iphone 11 pro max与iphone 12pro(2 max1) CES 2022-在Covid Surge、AMD和一加退学,加入微软、谷歌和英特尔。 iPhone 14谣言 – 发布日期,价格,SIM卡等(iphone14最新官方消息) 2022年最佳小手机