SLF4Jは、ファサードしてくれてるんで、いろいろ便利ですね。
でも、今回は単品(付属のシンプルロガー)での使用です。。
SLF4Jの入手
mavenを使って入手
pom.xmlは、こんな感じ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>2.0.11</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>2.0.11</version> </dependency> |
手動で入手
手動で入手するのであれば、以下のjarを入手することになります。
- slf4j-api-2.0.11.jar
- slf4j-simple-2.0.11.jar
※2024年2月現在です。
また、SLF4Jをファサード的に利用する場合は、別途その先のライブラリや連携のライブラリが必要です。
あくまで、単品動作のみの構成です。
Java SLF4Jを使って、ログを出力するサンプル
各ログレベルごとに、メッセージを標準出力します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Slf4jTest { private static final Logger logger; static { System.setProperty("org.slf4j.simpleLogger.defaultLogLevel","debug"); // System.setProperty("org.slf4j.simpleLogger.logFile","c:\\hoge\\fuga.log"); System.setProperty("org.slf4j.simpleLogger.showDateTime","true"); System.setProperty("org.slf4j.simpleLogger.dateTimeFormat","yyyy/MM/dd HH:mm:ss"); logger = LoggerFactory.getLogger(Slf4jTest.class); } public static void main(String[] args) { logger.trace("trace"); logger.debug("debug - {}","hoge"); logger.info("info"); logger.warn("warn"); logger.error("error"); } } |
実行結果
1 2 3 4 | 2024/02/14 00:00:00 [main] DEBUG Slf4jTest - debug - hoge 2024/02/14 00:00:00 [main] INFO Slf4jTest - info 2024/02/14 00:00:00 [main] WARN Slf4jTest - warn 2024/02/14 00:00:00 [main] ERROR Slf4jTest - error |
サンプルの解説
いろいろ無理やり感のあるサンプルコードです。。
プロパティファイルを排除した関係で、こんなコードになっています。。
実際にはこんなことをしなくても、System.setPropertyに記載している内容を「simplelogger.properties」を作って、中に記載するだけで、自動的に読み込んでくれます。
今回使った付属品の「シンプル」なロガーは、あまり大きな機能は持っていません。
とはいえ、ファイルの書き込みはしてくれるので、少しローテーションとか足せば、それなりに使えそうな気もします。
ファイルに書き込みたい場合は、設定を変えます。デフォルトは標準出力です。
staticイニシャライザのところでコメントアウトしている箇所が、ファイル出力先を指定すれば、ファイル出力になります。
また、デバッグ出力のところで使っている「{}」は、プレースホルダーです。
ちょっと楽になるので、うれしいですね。