我有一个工作的例子:
对于log4j2,请勿使用Syslog附加程序。 我必须以这种方式使用Socket附加程序( PatternLayout元素模拟了用于在网络中发送数据的传统转发格式,请参见: smtradfwd.c ):
name="XMLConfigTest" packages="org.apache.logging.log4j.test">
some.ip.address
rest-server
<128>表示设施LOCAL0 。 在网络中(以及使用传统转发格式时),每个syslog消息开头。
在服务器端,rsyslog应该这样配置:
# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
# Dynamic file
template (name="AppFile" type="string" string="/var/log/remote/%programname%.log")
if ( $fromhost-ip == 'the.remote.ip.address' ) then {
if ( $programname == 'rest-server' and $syslogfacility-text == 'local0' ) then {
action(type="omfile" Sync="on" FileCreateMode="0640" DynaFile="AppFile")
& stop
}
}