どのようなプログラムでもログ出力は必ず必要になります。したがって、Eclipse でプロジェクトを作成したら、まずログ出力できるような設定を行ってしまいましょう。
今回は現時点でロギングフレームワークのデファクトスタンダードである slf4j + logback でログ出力が行えるような設定を行います。
参考にさせていただきました。
logback.xmlを設定する | Java好き
Maven プロジェクトの作成
パッケージエクスプローラで右クリックして [New] → [Other] を選択すると、[New]ダイアログが表示されます。( Eclipse を日本語化している人は脳内翻訳して読んでください。)
Maven フォルダ内にある、[Maven Project]を選択して[Next]ボタン押下します。
すると[New Maven Project]ダイアログが表示されます。今回は学習のため、一番シンプルに作りたいので、[Create a simple project]にチェックを入れます。
[Next]ボタンをクリックするとアーティファクトの情報を入力する画面になるので、グループ ID とかアーティファクト ID とか、適当なものを入力してください。私の場合、以下のようにしました。
[Finish]ボタンを押下するとpom ファイル1個だけのシンプルなプロジェクトが作成されます。
Java バージョンの修正
Eclipse で Maven プロジェクトの作成からJDKバージョンの設定 - 山崎屋の技術メモ
以前、記事にもしましたが、Maven で作成したプロジェクトの Java バージョンは 1.5 になっているので、 1.8 に変更します。
修正前の pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.yyama</groupId> <artifactId>sample</artifactId> <version>0.0.1-SNAPSHOT</version> </project>
修正後の pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.yyama</groupId> <artifactId>sample</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> </project>
pom ファイルを保存し、パッケージエクスプローラ内でプロジェクトを右クリック、[Maven]→[Update Project...]を選択。
[Update Maven Project]ダイアログが表示されるので、作成中のプロジェクトにチェックが入っていることを確認して、[OK]ボタンを押下してください。
次のように、JRE System Library の箇所に [JaveSE-1.8]と表示されていれば OK です。
slf4J + logback の設定
pom.xml を再度編集し、グループ ID [ch.qos.logback]、アーティファクト ID [logback-classic] を依存先( dependency )に追加します。
バージョンは現時点(2017年4月28日)で最新の 1.2.3 にします。
修正後の pom.xml。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.yyama</groupId> <artifactId>sample</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <!-- ↓↓↓↓↓ ここを追加 ↓↓↓↓↓ --> <dependencies> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> </dependencies> <!-- ↑↑↑↑↑ ここを追加 ↑↑↑↑↑ --> </project>
Maven Dependencies に logback-classic-1.2.3.jar、logback-core-1.2.3.jar、slf4j-api-1.7.25.jar が追加されていることが分かります。
これで準備は整いました。
ログ出力してみる
さっそくログ出力してみましょう。
Main クラスを作って、次のように記述します。
package org.yyama; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Main { public static final Logger log = LoggerFactory.getLogger(Main.class); public static void main(String... args) { log.trace("trace!"); log.debug("debug!"); log.info("info!"); log.warn("warn!"); log.error("error!"); } }
実行結果。
14:46:26.223 [main] DEBUG org.yyama.Main - debug! 14:46:26.228 [main] INFO org.yyama.Main - info! 14:46:26.228 [main] WARN org.yyama.Main - warn! 14:46:26.228 [main] ERROR org.yyama.Main - error!
まだ logback.xml 等の設定ファイルがないので、デフォルトのログレベルと出力先(アペンダーという)が設定されています。
ログレベルは debug (だから実行結果に trace レベルのログが出力されていない)で、出力先はコンソール(標準出力)です。
lombock で楽をする
ロギングフレームワークを使用して開発を進めていくと、「public static final Logger log =...」の記述がすべてのクラスで登場することになります。lombock を使用すると、この決まり文句をアノテーションで指定できます。記述ミスもなくなるのでぜひ使いたいです。
以下の記述は Eclipse に lombock がインストールされていることを前提としています。やり方はここで紹介されています。
まず pom.xml を変更します。
変更後の pom.xml。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.yyama</groupId> <artifactId>sample</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <!-- ↓↓↓↓↓ ここを追加 ↓↓↓↓↓ --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.16</version> <scope>provided</scope> </dependency> <!-- ↑↑↑↑↑ ここを追加 ↑↑↑↑↑ --> </dependencies> </project>
Maven Dependencies に lombock-1.16.16.jar が追加されました。
すると Main クラスを次のように簡潔に書けます。
package org.yyama; import lombok.extern.slf4j.Slf4j; @Slf4j public class Main { public static void main(String... args) { log.trace("trace!"); log.debug("debug!"); log.info("info!"); log.warn("warn!"); log.error("error!"); } }
このように、プロジェクト生成時にはついでにログ出力の設定も行ってしまいましょう。
以上です。
- 作者: 中山清喬,国本大悟
- 出版社/メーカー: インプレス
- 発売日: 2014/08/12
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
EclipseではじめるJavaフレームワーク入門第5版Maven/Gradle対応
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2016/03/24
- メディア: 単行本
- この商品を含むブログを見る
- 作者: Kengo TODA
- 発売日: 2016/09/27
- メディア: Kindle版
- この商品を含むブログを見る