2014-09-19 44 views
1

我在Mac(OSX 10.9.2)上的log4j2的SyslogAppender出現問題。 log4j2發送給syslog的默認格式導致消息被錯誤地解析。我的配置:Log4j2 Mac上的系統日誌Appender格式化

<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! 

根據Date St環兩兩地之間的分裂,它看起來像log4j2 SyslogAppender使用的默認格式:

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

和系統日誌被錯誤地分裂的一切。發件人不應該是日期字符串的第一部分,並且郵件不應該是郵件的組合剩餘部分。

我無法找到一種方法來更改SyslogAppender的格式字符串,因爲內部添加PatternLayout元素只是被忽略。我還研究了此處提出的LoggerFields解決方案:log4j2 - Syslog appender and PatternLayout,並且僅使Message元素進一步複雜化,而不解決發送方不正確的問題。

有誰知道如何調整log4j2的SyslogAppender,以便它發送格式正確的消息到OSX 10.9.2的系統日誌?

回答