![](/img/trans.png)
[英]can not write log in separate file using Log4J and spring boot application in tomcat server
[英]How to write separate log file in syslog server in java using log4j
我有一個Web應用程序,我想使用log4j中的Syslog Appender在遠程計算機中寫入此Web應用程序的日志文件。該日志文件寫在Syslog服務器中,但文件名為Class.Log。 我要提供正確的日志文件名。該怎么辦?
我有一個工作的例子:
對於log4j2,請勿使用Syslog
附加程序。 我必須以這種方式使用Socket
附加程序( PatternLayout
元素模擬了用於在網絡中發送數據的傳統轉發格式,請參見: smtradfwd.c ):
<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
。 請參閱: rsyslog.h 。 在網絡中(以及使用傳統轉發格式時),每個syslog消息<FACILITY_NUMBER>
開頭。
在服務器端,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
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.