あなたのlog4j.propertiesに別のアペンダを追加します。
# configure the root logger
log4j.rootLogger=INFO, SYSLOG, SYSLOG7
# configure Syslog facility LOCAL6 appender
log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG.threshold=INFO
log4j.appender.SYSLOG.syslogHost=localhost
log4j.appender.SYSLOG.facility=LOCAL6
log4j.appender.SYSLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.SYSLOG.layout.conversionPattern="MyApp: %d\{ISO8601\}%m\n"
# configure Syslog facility LOCAL7 appender
log4j.appender.SYSLOG7=org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG7.threshold=ERROR
# vv change to whatever the host is
log4j.appender.SYSLOG7.syslogHost=localhost
log4j.appender.SYSLOG7.facility=LOCAL7
log4j.appender.SYSLOG7.layout=org.apache.log4j.PatternLayout
log4j.appender.SYSLOG7.layout.conversionPattern="MyApp: %d\{ISO8601\}%m\n"
編集に関するコメント:
SYSLOG7だけエラーを記録(以上)ものとした場合:ERRORレベルにしきい値を設定します。下位レベルで記録されたすべてのメッセージは表示されません。
トリッキーな部分は、syslogにのみ低レベルを表示することです:
あなただけのメッセージをログに記録するフィルタを使用することができ、「下」よりも、例えばERROR
レベル。
log4jの場合2:フィルタはPropertyConfiguratorではサポートされていません。したがって、それを使用するにはXML設定に変更する必要があります。 log4j-Wiki about filtersを参照してください。
例 "特定水準"
<appender name="info-out" class="org.apache.log4j.FileAppender">
<param name="File" value="info.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="info" />
<param name="AcceptOnMatch" value="true"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter" />
</appender>
または "レベル範囲" 我々は、プロパティファイルでフィルタを使用できるのlog4j 1.2で
<appender name="info-out" class="org.apache.log4j.FileAppender">
<param name="File" value="info.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMax" value="info"/>
<param name="LevelMin" value="info"/>
<param name="AcceptOnMatch" value="true"/>
</filter>
</appender>
がSYSLOG7アペンダの閾値はERRORではないでしょうか?どのように私が使用したいアペンダーをJavaコードで選択できますか? LOG.error( "msg")を書くだけで十分です。 ? SYSLOGにのみinfoメッセージを記録し、SYSLOG7でエラーメッセージを記録したいと思います。 – BlackCat
7がERRORメッセージ(およびそれ以上)のみを表示する場合は、Threahsoldをyesに設定します。難しいのは、6〜** ** ERRORメッセージを表示しないことです。フィルタを設定することはできますが、正しく覚えていれば、フィルタを使用できるようにxml設定に変更する必要があります。 – Fildor
これはlog4j 2の回避策かもしれませんが、1.2ではxmlファイルなしでもこれを行うことができます。キーは実際にはLevelMinとLevelMaxフィルタでした。後で私は気付きました、もし私が追加の機能でこのロガーを拡張したいのであれば、より多くのロガーを定義することをお勧めします。同様の重大度レベルのログメッセージを、そのプロパティに応じて異なる施設にログする必要がある場合。 – BlackCat