は私が作業例を持っています。私は(:smtradfwd.cPatternLayout
要素は、ワイヤにデータを送信するための伝統的な転送フォーマットをシミュレートし、参照してください)。この方法でSocket
アペンダを使用していた
<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
}
}
あなたのSyslogサーバーに「宛先」モードを持っている必要があります。ここで、.logファイルの名前を宣言する必要があります。 –
お返事ありがとうございました。しかし、ここではrsyslog.confファイルを使用してログファイルの場所を設定しています。以下の設定を使用しています:$ template RemoteLogs、 "/ var/log /%HOSTNAME%/%PROGRAMNAME%.log" *リモートログ フォルダはHOSTNAMEを使用して作成されますが、ログファイル名はCLASS.log –
として表示されます。ハム。あなたがSyslogサーバにとって難しいと思われるものは、正確なクラス名を取るためにLogstashのようなものが必要です。それを達成するための簡単な方法は、たくさんのクラスが書かれていない場合、それぞれが異なるポートに2つ(またはあなたが持っている異なるクラス)のSyslogサーバを作成することです。次に、クライアント側で、2つの異なるsyslogAppendersを定義します(ポート1用とポート2用)。 –