Mac上的Log4j2 Syslog Appender格式

时间:2014-09-19 01:57:58

标签: macos syslog log4j2

我在Mac上遇到log4j2的SyslogAppender问题(OSX 10.9.2)。 log4j2发送到syslog的默认格式导致消息被错误地解析。我的配置:

<Syslog name="Syslog" host="localhost" port="514"
 protocol="UDP" format="RFC5424" appName="MyApp" id="log4j2-test"
 mdcIncludes="Priority,Logger,Exception,Message" newLine="true"> 
</Syslog>

当我跑步时:

syslog -F raw

我得到以下内容:

[ASLMessageID 1291756] [Time 1411090836] [TimeNanoSec 0] [Level 6] [PID 4294967295] [UID 4294967294] [GID 4294967294] [ReadGID 80] [Host 1] [Sender 2014-09-19T01] [Facility local0] [Message 40:36.481Z Mario.local MyApp - - - Hello, world!]

没有原始格式的相同消息显示如下:

Sep 19 09:40:36 1 2014-09-19T01[4294967295] <Info>: 40:36.481Z Mario.local MyApp - - - Hello, world!

根据日期字符串在两个地方之间的分配方式,看起来像log4j2 SyslogAppender使用默认格式:

%d <host> <app> - - - %m

并且syslog正在错误地拆分所有内容。发件人不应该是日期字符串的第一部分,而邮件不应该是邮件的组合部分。

我找不到改变SyslogAppender格式字符串的方法,因为在里面添加一个PatternLayout元素只是被忽略了。我还研究了这里提出的LoggerFields解决方案:log4j2 - Syslog appender and PatternLayout并且只会进一步使Message元素复杂化,而不会解决使用不正确的Sender的问题。

有没有人知道如何调整log4j2的SyslogAppender,以便将正确格式的消息发送到OSX 10.9.2的syslog?

1 个答案:

答案 0 :(得分:0)

我建议将其作为log4j2 Jira问题跟踪器上的功能请求提出:http://logging.apache.org/log4j/2.x/issue-tracking.html