Записывать в другой файл в соответствии с потоком

У меня есть приложение с несколькими «контроллерами», и я бы хотел, чтобы каждый журнал был в отдельном файле . Это достаточно просто для их собственного кода, но я также использую некоторый код библиотеки, который использует ведение журнала общего доступа. Могу ли я каким-то образом заставить этот код регистрироваться и в файле, специфичном для контроллера?

Я думал, что могу как-то сделать это по потоку:

class Controller {

 public void action() {
  setCurrentThreadLogFile(myLogFile);
  try {
   Library.stuff();
  } finally {
   restoreCurrentThreadLogFile();
  }
 }

}

В настоящее время я использую общедоступное ведение журнала для своего собственного журнала, с log4j в качестве бэкэнда. Но я мог бы изменить это, если нужно, или использовать сочетание (возможно ли это в рамках системы ведения журнала общих ресурсов).

Один из способов сделать это - написать свою собственную реализацию ведения журнала общих ресурсов (возможно, оболочку для log4j), но есть ли существующее решение?

5
задан skaffman 17 May 2012 в 15:17
поделиться