Автор оригинала: mkyong.
В этом уроке мы покажем вам, как использовать Logback Сопоставленный диагностический контекст (MDC)
и SiftingAppender
для создания отдельного файла журнала для каждого потока.
P.S Протестировано с Logback 1.1.2, должно работать в более ранней версии.
1. P.S Протестировано с Logback 1.1.2, должно работать в более ранней версии. пример
А logback.xml
файл, показывающий, как объявлять и настраивать Приложение для просеивания
и MDC
.
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
package com.mkyong.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 потоков.
Рекомендации
Оригинал: “https://mkyong.com/logging/logback-different-log-file-for-each-thread/”