LogbackとSLF4jでテキストファイルにログを出力するサンプルです。
xmlの設定ファイルを使用します。
| 確認環境 ・Windows10 ・Java 9/ Java 8 ・eclipse 4.7/4.6 ・logback-classic-1.2.3.jar ・logback-core-1.2.3.jar ・slf4j-api-1.7.25.jar |
目次
logback
- logbackは、ログを出力するライブラリです。
- SLF4jと組み合わせて使う前提です。
- 以下は、logbackのJavadocです。
https://logback.qos.ch/apidocs/index.html
SLF4j
- SLF4jは、ログファサード(Facade)ライブラリです。
- SLF4Jは、ログ出力の抽象層です。あるログから別のログに移行できる設計です(例、java.util.logging、logback、log4j)。
- 以下は、SLF4jのJavadocとSLF4jのページのリンクです。
https://www.slf4j.org/apidocs/index.html
https://www.slf4j.org/
1.jarファイルの取得
下記のサイトからlogback-1.2.3.zipをダウンロードします。
Logbackのサイト
https://logback.qos.ch/download.html
ダウンロードしたzipを展開し以下のファイルを任意の場所に配置します。
logback-classic-1.2.3.jar
logback-core-1.2.3.jar
logback-examples/lib/slf4j-api-1.7.25.jar
2.jarファイルをクラスパス(ビルドパス)に追加
logback-classic-1.2.3.jarとlogback-core-1.2.3.jarとslf4j-api-1.7.25.jarをクラスパスに追加します。
クラスパスに追加する手順は、以下を参照願います。
Eclipse 外部jarファイルをクラスパス(ビルドパス)に設定する方法
3.設定ファイルの作成
logback.xmlというファイルを作成しコードを記述します。
logback.xmlはなくても動きます。
3行目のpropertyタグは、変数の設定です。nameの値を変数として使用しています。(例:3行目のlogDirは8,11行目で使用されている)
7行目のappenderタグは、ファイル出力の設定です。
20行目のappenderタグは、コンソール出力の設定です。
26行目のrootタグのlevelには、TRACE、DEBUG、INFO、WARN、ERROR、ALL、OFFのいずれかを指定します。小文字でも可です。WARNを設定するとログはWARNとERRORのみ出力されます。
27行目のappender-refは、参照しているアペンダーがロガーに割り当てられます。
<configuration>
<property name="logDir" value="./logs/" />
<property name="fileName" value="testlog.log" />
<property name="format1" value="%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-6p %c{10} %m%n" />
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logDir}${fileName}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logDir}${fileName}.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>1</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${format1}</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${format1}</pattern>
</encoder>
</appender>
<root level="trace">
<appender-ref ref="FILE" />
<appender-ref ref="STDOUT" />
</root>
</configuration>
完成したらlogback.xmlをビルドパスに通します。
フォルダを作成してそのフォルダにビルドパスを追加しその中にlogback.xmlを置きます。
フォルダを作成してビルドパスを追加する方法は、以下を参照願います。
Eclipse フォルダを作成してビルドパスに設定する手順
4.ソースコードの作成
以下のコードを記述します。
package test1;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
class Sample {
private Logger logger = LoggerFactory.getLogger("Sample");
void runSample() {
int a = 1;
int b = 2;
String c = null;
logger.trace("trace"); //2017/01/24 18:19:02.512 [main] TRACE Sample trace
logger.debug("debug"); //2017/01/24 18:19:02.514 [main] DEBUG Sample debug
logger.info("info: {}", a); //2017/01/24 18:19:02.515 [main] INFO Sample info: 1
logger.warn("warn: {}{}", a, b); //2017/01/24 18:19:02.516 [main] WARN Sample warn: 12
logger.error("error: {}", c); //2017/01/24 18:19:02.516 [main] ERROR Sample error: null
}
}
public class Test1 {
public static void main(String[] args) {
Sample s = new Sample();
s.runSample();
}
}
5.出力ファイルの確認
実行するとコンソールとファイルにログファイル(testlog.log)が出力されます。
ログファイルが存在しない場合は新規に作成されます。
ログファイルが存在する場合は追記されます。
出力されるログは以下の通りです。
2017/01/24 18:19:02.512 [main] TRACE Sample trace
2017/01/24 18:19:02.514 [main] DEBUG Sample debug
2017/01/24 18:19:02.515 [main] INFO Sample info: 1
2017/01/24 18:19:02.516 [main] WARN Sample warn: 12
2017/01/24 18:19:02.516 [main] ERROR Sample error: null
関連の記事
Java log4j2でテキストにログを出力するサンプル
Java log4j 1.2でテキストにログを出力するサンプル(設定ファイルがテキスト)
Java log4j 1.2でテキストにログを出力するサンプル(設定ファイルがxml)
Java log4j 1.2でコンソールにログを出力するサンプル