今回は、log4j(Apache log4j)ライブラリの設定ファイルでログ出力をしない方法を設定する内容について紹介していきます。
検証環境
検証に使用した環境/ライブラリを次に記載します。
- java
- バージョン:11
- Gradle
- バージョン:7.2
- log4j
- バージョン:1.2.17
ビルドスクリプト
プログラム例で使用するビルドスクリプトは、次のようになります。
plugins {
id 'java'
}
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'log4j:log4j:1.2.17'
}
ログ出力レベル
ログ出力レベルの設定値は、次の値を指定することができます。ログを出力しない場合は、「OFF」を指定します。
ログレベル |
---|
OFF |
FATAL |
ERROR |
WARN |
INFO |
DEBUG |
TRACE |
ALL |
ログ出力レベルの詳細については、次のAPIドキュメントも参考にしてみてください。
プログラム例
ログ出力のプログラム例は、次のようになります。ログレベルごとの出力処理を実行するプログラムになります。
【ソースコード】
package com.fumidzuki;
import org.apache.log4j.Logger;
public class Main {
public static void main(String[] args) {
Logger logger = Logger.getLogger(Main.class);
logger.trace("trace.");
logger.debug("debug.");
logger.info("info.");
logger.warn("warn.");
logger.error("error.");
logger.fatal("fatal.");
}
}
設定ファイルでログ出力レベルを変更して動作を確認していきます。
設定ファイル(ログ出力する)
ログを出力する例では、設定ファイルのログ出力レベルに「info」を指定した例になります。
【log4j.properties】
設定ファイル例は、次のようになります。「log4j.xml」とおなじ動作になります。
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss:SSS} %p %m%n
log4j.rootLogger=info, stdout
【log4j.xml】
設定ファイル例は、次のようになります。「log4j.properties」とおなじ動作になります。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration>
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n" />
</layout>
</appender>
<root>
<level value="info" />
<appender-ref ref="stdout" />
</root>
</log4j:configuration>
【実行例】
プログラムを実行するとコンソールには、次のような結果が出力されます。
info.
warn.
error.
fatal.
設定ファイル(ログ出力しない)
ログを出力しない例では、設定ファイルのログ出力レベルに「off」を指定した例になります。
【log4j.properties】
設定ファイル例は、次のようになります。「log4j.xml」とおなじ動作になります。ログ出力しない例と違う箇所は、「log4j.rootLogger」を「info」から「off」に変更しています。
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss:SSS} %p %m%n
log4j.rootLogger=off, stdout
【log4j.xml】
設定ファイル例は、次のようになります。「log4j.properties」とおなじ動作になります。ログ出力しない例と違う箇所は、「level」を「info」から「off」に変更しています。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration>
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n" />
</layout>
</appender>
<root>
<level value="off" />
<appender-ref ref="stdout" />
</root>
</log4j:configuration>
【実行例】
プログラムを実行するとコンソールには、何も表示されないことを確認することができます。
まとめ
log4jライブラリは、設定ファイルのログ出力レベルに「off」を指定することでログを出力しない制御ができるようになります。