Mac 上的 Log4j2 Syslog Appender 格式
Posted
技术标签:
【中文标题】Mac 上的 Log4j2 Syslog Appender 格式【英文标题】:Log4j2 Syslog Appender formatting on Mac 【发布时间】:2014-09-19 01:57:58 【问题描述】:我在 Mac (OSX 10.9.2) 上遇到 log4j2 的 SyslogAppender 问题。 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 元素进一步复杂化,而不会解决发送者不正确的问题。
有谁知道如何调整 log4j2 的 SyslogAppender 以便将格式正确的消息发送到 OSX 10.9.2 的 syslog?
【问题讨论】:
【参考方案1】:我建议在 log4j2 Jira 问题跟踪器上将此作为功能请求提出:http://logging.apache.org/log4j/2.x/issue-tracking.html
【讨论】:
以上是关于Mac 上的 Log4j2 Syslog Appender 格式的主要内容,如果未能解决你的问题,请参考以下文章
log4j2 和 syslog,使用 RFC5424 格式不显示日志消息的可变参数部分
log4j2 - Syslog 附加程序和 PatternLayout