log4j2の場合、ログレベルごとに異なるパターンレイアウトを使用してSYSTEM_OUTに出力することは可能ですか?
これが私のlog4j2.xmlです:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="debugMsg" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %l - %msg%n"/>
</Console>
<Console name="infoMsg" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="trace" additivity="false">
<AppenderRef ref="infoMsg" level="info"/>
<AppenderRef ref="debugMsg" level="debug"/>
</Root>
</Loggers>
</Configuration>
ただし、INFOレベルのメッセージは「infoMsg」と「debugMsg」の両方のパターンで表示されます。
2015-12-24 10:51:56.176 Log4j is ready.
[INFO ] 2015-12-24 10:51:56.176 com.myftpserver.MyFtpServer.<init>(MyFtpServer.java:65) - Log4j is ready.
2015-12-24 10:51:56.176 Configuration file is loaded
[INFO ] 2015-12-24 10:51:56.176 com.myftpserver.Configuration.load(Configuration.java:74) - Configuration file is loaded
[DEBUG] 2015-12-24 10:51:56.176 com.myftpserver.Configuration.load(Configuration.java:82) - supportPassiveMode=true
2015-12-24 10:51:56.301 User Manager class is loaded.
[INFO ] 2015-12-24 10:51:56.301 com.myftpserver.Configuration.load(Configuration.java:119) - User Manager class is loaded.
2015-12-24 10:51:56.301 File Manager class is loaded.
[INFO ] 2015-12-24 10:51:56.301 com.myftpserver.Configuration.load(Configuration.java:121) - File Manager class is loaded.
2015-12-24 10:51:56.301 Server Initialization completed.
[INFO ] 2015-12-24 10:51:56.301 com.myftpserver.MyFtpServer.<init>(MyFtpServer.java:69) - Server Initialization completed.
2015-12-24 10:51:56.301 Available passive port:[1232, 1233, 1234]
[INFO ] 2015-12-24 10:51:56.301 com.myftpserver.MyFtpServer.<init>(MyFtpServer.java:75) - Available passive port:[1232, 1233, 1234]
それで、重複したアイテムを削除することは可能ですか?
どうもありがとうございましたそしてメリークリスマス
Log4j2の最新バージョンでは、単一のパターンではなく、パターンセレクターを使用できます。Log4jは、マーカーに基づくセレクターを提供しますが、レベルに基づくセレクターは提供しません。Jiraの問題を作成し、追加します。ただし、Log4jでは、スクリプトを使用してパターンを選択できます。レベルに基づいて選択するものを書くのは簡単でしょう。
上記の構成では、デバッグアペンダーも情報レベルのイベントを出力するため、重複が表示されます。
私はそれをテストしていませんが、以下の構成はあなたが望むことをするはずだと思います:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout>
<ScriptPatternSelector defaultPattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %l - %msg%n">
<Script name="LevelSelector" language="bsh"><![CDATA[
if (logEvent.getLevel() == org.apache.logging.log4j.Level.INFO) {
return "INFO";
}
return null;
]]>
</Script>
<PatternMatch key="INFO" pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %msg%n"/>
</ScriptPatternSelector>
</PatternLayout>
</Console>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加