我有一个Web应用程序。我想在log4j中使用Syslog Appender在远程机器上写这个Web应用程序的日志文件。日志文件写在Syslog服务器中。但是文件名是Class.Log。我想给出正确的日志文件名。我该怎么做?
答案 0 :(得分:1)
我有一个有效的例子:
对于log4j2,请勿使用Socket
appender。我必须以这种方式使用PatternLayout
appender(<Configuration status="error" strict="true" monitorInterval="30"
name="XMLConfigTest" packages="org.apache.logging.log4j.test">
<Properties>
<Property name="REMOTE_HOST">some.ip.address</Property>
<Property name="APP_NAME">rest-server</Property>
</Properties>
<Appenders>
<Socket name="REMOTE" host="${REMOTE_HOST}" port="514" protocol="TCP">
<PatternLayout pattern="<128>%d{MMM dd HH:mm:ss} ${hostName} ${APP_NAME}[${sys:PID}]: %-5level %c %M - %msg%xEx%n" />
</Socket>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="REMOTE"/>
</Root>
</Loggers>
</Configuration>
元素模拟传输数据的传统转发格式,请参阅:):
<128>
LOCAL0
表示设施<FACILITY_NUMBER>
。见:smtradfwd.c。在线路中(以及使用传统转发格式时),每个系统日志消息都以# 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
}
}
开头。
在服务器端,应该像这样配置rsyslog:
imageExtent