ログバック-スレッドごとに異なるログファイル

このチュートリアルでは、ログバックMapped Diagnostic Context (MDC)とSiftingAppenderを使用して、スレッドごとに個別のログファイルを作成する方法を示します。
P.S Tested with Logback 1.1.2, should work in earlier version.
Note
詳細については、このLogback MDC documentationを参照してください
1. logback.xml example
SiftingAppenderおよびMDCを宣言および構成する方法を示すlogback.xmlファイル。
logback.xml
logFileName head0 ${USER_HOME}/${logFileName}.log %d{yyyy-MM-dd HH:mm:ss} %mdc [%thread] %level %logger{35} - %msg%n ${USER_HOME}/${logFileName}.%i.log.zip 1 10 10MB %-5level %logger{36} - %msg%n
2. Javaスレッドの例
MDC.putを介して「logFileName」値を宣言した単純なスレッドの例
Head.java
package com.example.analyzer.core;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
public class Head implements Runnable {
static Logger logger = LoggerFactory.getLogger(Head.class);
private String name;
@Override
public void run() {
MDC.put('logFileName', getName());
logger.debug("hello");
//remember remove this
MDC.remove('logFileName');
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
10スレッドを開始
int count = 1;
while(count<=10){
Head head = new Head();
head.setName("head-" + count);
threadPools.execute(head);
count++;
}
出力:10スレッドの10個の個別のログファイル。

Note
このMDC機能を使用すると、ログインユーザーごと、URI要求ごと、リモートホストごとなどの個別のログファイルに出力をログに記録することもできます。