log4j2和syslog,使用RFC5424格式不显示日志消息的varargs部分

时间:2015-03-03 20:11:44

标签: java log4j2 syslog

我已配置此syslog appender:

    <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输出的varargs部分。例如,代码中的这个日志语句:

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 {}

但是在应用程序日志文件中,我确实得到了声明的varargs部分:

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配置中遗漏一些东西吗?

1 个答案:

答案 0 :(得分:0)

在模式布局中,%t代表线程名称,您可以使用%m来获取消息。

如果这不能解答您的问题,您是否可以澄清预期的结果? (您解释了重现的步骤和实际结果,但如果您能明确表达您希望/希望实现的输出,将会很有帮助。)