log4j2 和 syslog,使用 RFC5424 格式不显示日志消息的可变参数部分
log4j2 and syslog, using RFC5424 format does not show varargs part of log message
我配置了这个系统日志附加程序:
<Syslog name="syslog" format="RFC5424" host="localhost" port="514"
protocol="UDP" appName="" includeMDC="true"
facility="LOCAL0" enterpriseNumber="" newLine="true"
messageId="" id="">
<LoggerFields>
<KeyValuePair key="c" value="%c{1}" />
<KeyValuePair key="l" value="%p" />
<KeyValuePair key="t" value="%t" />
</LoggerFields>
</Syslog>
local0 中的日志消息没有获取 log4j2 输出的可变参数部分。比如代码中的这条日志语句:
log.info("commit(). Query {}", query.getQuery());
将在 local0.log 中产生此输出(不是末尾的大括号):
Mar 3 20:09:22 127.0.0.1 1 2015-03-03T20:09:22.431Z app-03-prod.lax.projone.net - [mdc@18060 c="c.c.p.p.TransactionHelper" l="INFO" t="qtp812765588-375 - /id/1.0/credential?appKey=867ac7681942fb3ee5453b95378f155e"] commit(). Query {}
但是在应用程序日志文件中,我确实得到了语句的可变参数部分:
2015-03-03 20:04:25,374 INFO c.c.p.p.TransactionHelper [qtp380256045-442 - /id/1.0/session/start?appKey=940d52aac10af731c83176e65a763f87] commit(). Query INSERT INTO oid_identity (oid, app_id, app_uid, platform_id, platform_uid, creation_time) VALUES ( UNHEX( ? ), ? , ?, ? , ? , ? ) ON DUPLICATE KEY UPDATE creation_time=creation_time
我一定是在 log4j2.xml 配置中遗漏了什么?
在模式布局中,%t
代表线程名称,您将使用%m
来获取消息。
如果那不能回答您的问题,您能否阐明您的预期结果? (您解释了重现的步骤和实际结果,但如果您能明确说明您 expect/want 要实现的输出结果将会很有帮助。)
我配置了这个系统日志附加程序:
<Syslog name="syslog" format="RFC5424" host="localhost" port="514"
protocol="UDP" appName="" includeMDC="true"
facility="LOCAL0" enterpriseNumber="" newLine="true"
messageId="" id="">
<LoggerFields>
<KeyValuePair key="c" value="%c{1}" />
<KeyValuePair key="l" value="%p" />
<KeyValuePair key="t" value="%t" />
</LoggerFields>
</Syslog>
local0 中的日志消息没有获取 log4j2 输出的可变参数部分。比如代码中的这条日志语句:
log.info("commit(). Query {}", query.getQuery());
将在 local0.log 中产生此输出(不是末尾的大括号):
Mar 3 20:09:22 127.0.0.1 1 2015-03-03T20:09:22.431Z app-03-prod.lax.projone.net - [mdc@18060 c="c.c.p.p.TransactionHelper" l="INFO" t="qtp812765588-375 - /id/1.0/credential?appKey=867ac7681942fb3ee5453b95378f155e"] commit(). Query {}
但是在应用程序日志文件中,我确实得到了语句的可变参数部分:
2015-03-03 20:04:25,374 INFO c.c.p.p.TransactionHelper [qtp380256045-442 - /id/1.0/session/start?appKey=940d52aac10af731c83176e65a763f87] commit(). Query INSERT INTO oid_identity (oid, app_id, app_uid, platform_id, platform_uid, creation_time) VALUES ( UNHEX( ? ), ? , ?, ? , ? , ? ) ON DUPLICATE KEY UPDATE creation_time=creation_time
我一定是在 log4j2.xml 配置中遗漏了什么?
在模式布局中,%t
代表线程名称,您将使用%m
来获取消息。
如果那不能回答您的问题,您能否阐明您的预期结果? (您解释了重现的步骤和实际结果,但如果您能明确说明您 expect/want 要实现的输出结果将会很有帮助。)