我在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的系統日誌?