我的syslog-ng配置是:
source s_src { tcp(ip(127.0.0.1) port(1000)); };
destination df_local0 { file ("/var/log/mylog-${YEAR}.${MONTH}.${DAY}.log" template("${YEAR}${MONTH}${DAY}-${HOUR}${MIN}${SEC} ${MESSAGE}\n")); };
filter f_local0 { facility(local0);};
log { source(s_src); filter(f_local0); destination(df_local0);};
我的log4j2.xml是
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyAppx" packages="">
<Appenders>
<Syslog name="RFC5424" format="RFC5424" host="127.0.0.1" port="1000"
protocol="TCP" appName="app" mdcId="mdc" includeMDC="true"
facility="LOCAL0" enterpriseNumber="" newLine="true" immediateFail="false"
messageId="" id="" ignoreExceptions="true">
<PatternLayout pattern="%d{HHmmss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
<LoggerFields>
<KeyValuePair key="level" value="%level"/>
<KeyValuePair key="location" value="%location"/>
<KeyValuePair key="ex" value="%ex"/>
</LoggerFields>
</Syslog>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="RFC5424" />
</Root>
</Loggers>
</Configuration>
我的输出syslog-ng输出是:
20150518-151925 2015-05-18T15:19:25.546+02:00 node001-NT-A2400-NT-A3500 app - [mdc@18060 ex="" level="DEBUG" location="eu.test.prot.ads.ADSClient.run(ADSClient.java:431)"] Thread top
如您所见,默认情况下有一种格式为
的时间戳2015-05-18T15:19:25.546+02:00
还会打印主机名。我如何影响输出?
是否还有一个机会来访问syslog-ng.conf中的log4j LoggerField?
我希望有一个像
这样的输出20150518-151925 - app - DEBUG - eu.test.prot.ads.ADSClient.run(ADSClient.java:431)" - Thread top
答案 0 :(得分:0)
我猜测syslog-ng无法识别log4j消息中的时间戳,并附加时间戳。
此外,在syslog-ng配置中,您使用tcp()源,主要用于接收RFC3164消息,但在log4j中,您设置format =“RFC5424”。 尝试更改syslog-ng配置以使用syslog()源:https://www.balabit.com/sites/default/files/documents/syslog-ng-ose-latest-guides/en/syslog-ng-ose-guide-admin/html/configuring-sources-syslog.html
HTH 问候,
Robert Fekete