如何使用log4j

时间:2017-03-09 10:02:40

标签: java log4j rsyslog

我有一个Web应用程序。我想在log4j中使用Syslog Appender在远程机器上写这个Web应用程序的日志文件。日志文件写在Syslog服务器中。但是文件名是Class.Log。我想给出正确的日志文件名。我该怎么做?

1 个答案:

答案 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="&lt;128&gt;%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> 元素模拟传输数据的传统转发格式,请参阅:enter image description here):

<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