log4j异步输出日志时,类名、方法名和行号为问号

这里写自定义目录标题

问题描述

最近有个系统使用的是log4j输出日志,并发比较高的时候,日志输入量大导致系统处理性能降低。后考虑使用log4j异步输出的方式进行日志输出,结果发现日志中输出的类名(%C{4})和方法名(%M)及行号(%L)是问号。

	 <appender name="LOGFILE_DAY" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="File" value="E:/logs/system.log" /> 
		<param name="Encoding" value="GBK" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%C{4}.%M,%L]-[%m]" />
		</layout>
	</appender>
	<appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
	   <param name="BufferSize" value="512" />
		<appender-ref ref="LOGFILE_DAY" />
	</appender>

解决方法

最后查看log4j的源码:org.apache.log4j.AsyncAppender发现有一个参数:locationInfo,最后把这个参数设置上即可:

<appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
	   <param name="BufferSize" value="512" />
	   <param name="LocationInfo" value="true"/>
		<appender-ref ref="LOGFILE_DAY" />
	</appender>

猜你喜欢

转载自blog.csdn.net/wzl19870309/article/details/124176503