【Java】log4j2
log4j2
log4j2はJavaのロギングユーティリティであるlog4jの後継です。
厳密にはv1のlog4jがv2担っただけのものですが、プロパティファイルの命名やプロパティの設定方法などが一部新しくなっています。
Log4j – Apache Log4j 2 - Apache Log4j 2
Usage
Mavenでdependency
を追加する場合は以下。
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.11.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.11.1</version> </dependency>
Source
LogManager
でロガーを取得できます。
Loggerオブジェクトは名称によって異なるインスタンスを扱い、ログも別々に出力されます。
Loggerによって、ファイルやコンソールなどの出力先や、ログのアーカイブの設定なども、後述するプロパティファイルの設定で別々に行うことができます。
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; ... // Loggerオブジェクトの取得 Logger logger = LogManager.getLogger(Hoge.class);
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; // 簡単なLoggerのラッパークラス public class LoggerWrapper { private Logger logger; private LoggerWrapper(String name) { logger = LogManager.getLogger(name); } public static LoggerWrapper getLogger(String name) { return new LoggerWrapper(name); } public void trace(Object message) { logger.trace(message); } public void debug(Object message) { logger.debug(message); } public void info(Object message) { logger.info(message); } public void warn(Object message) { logger.warn(message); } public void error(Object message) { logger.error(message); } public void fatal(Object message) { logger.fatal(message); } public void begin(String message){ this.info("BEGIN : " + message); } public void end(String message){ this.info("END : " + message); } }
log4j2のプロパティファイル
log4j2の設定は以下のファイルをクラスパス配下に置くことで可能になります。
設定ファイルはproperties > yaml > json > xml の優先度で適用されます。
詳細な設定方法は以下。
Log4j – Configuring Log4j 2 - Apache Log4j 2