Рубрики
Без рубрики

Обратный вход – отдельный файл журнала для каждого потока

– Обратный вход – отдельный файл журнала для каждого потока

Автор оригинала: 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 потоков.

Рекомендации

  1. Документация MDC для входа в систему

Оригинал: “https://mkyong.com/logging/logback-different-log-file-for-each-thread/”