そうでなくともログは重要です。デバッグでなくともアプリのトレースが必要な場合は多いです。
Java でログを出力するための便利なライブラリは多種さまざまありますが、そのなかでも slf4j+logger なる方法が便利です。static で Logger を定義できて、出力形式を XML で指定できます。
必要な jar ファイルは以下の通りです[*]。
logback-classic-1.2.1.jar
logback-core-1.2.1.jar
slf4j-api-1.7.24.jar
必要最小限なコードを示します。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import org.slf4j.Logger; | |
import org.slf4j.LoggerFactory; | |
public class LogTest { | |
public static void main(String[] args) { | |
Logger log = LoggerFactory.getLogger(LogTest.class); | |
log.info("LogTest running ..."); | |
} | |
} |
出力用のログファイルの設定は logback.xml で。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE logback> | |
<configuration> | |
<timestamp key="time" datePattern="yyyy-MM-dd_HHmmss" /> | |
<appender name="FILE" class="ch.qos.logback.core.FileAppender"> | |
<file>log/SCDFgen-${time}.log</file> | |
<encoder> | |
<charset>UTF-8</charset> | |
<pattern>%m%n</pattern> | |
</encoder> | |
</appender> | |
<root> | |
<appender-ref ref="FILE" /> | |
</root> | |
</configuration> |
こいつは奥が深いです。ライブラリのソースの規模を見ると圧倒されます。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE logback> | |
<configuration> | |
<timestamp key="time" datePattern="yyyy-MM-dd_HHmmss" /> | |
<appender name="FILE" class="ch.qos.logback.core.FileAppender"> | |
<file>log/WavSplit-${time}.log</file> | |
<encoder> | |
<charset>UTF-8</charset> | |
<pattern>%m%n</pattern> | |
</encoder> | |
</appender> | |
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> | |
<encoder> | |
<pattern>%-7([%level]) %m%n</pattern> | |
<charset>UTF-8</charset> | |
</encoder> | |
</appender> | |
<root> | |
<appender-ref ref="STDOUT" /> | |
</root> | |
</configuration> |
ログのレベルは error>warn>info>debug>trace などあります。デフォルトではファイル出力はすべて、標準出力はデバッグレベルまで。レベルごと分けておくと便利です。