Вот моя ситуация: у меня есть библиотечный проект с целью переопределить log4net и централизовать журналы с помощью специального приложения. У меня есть эти классы:
myCustomLogManager
CustomLog
ICustomLog
В myCustomLogManager я получил это:
public class myCustomLogManager
{
public static ICustomLog GetLogger(System.Type t)
{
return new CustomLog(t);
}
// Other stuff
}
Мой пользовательский журнал:
class CustomLog : ICustomLog
{
private static ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public CustomLog(System.Type t)
{
log = LogManager.GetLogger(t);
}
public void Debug( string message, Exception e)
{
log.Debug(message, e);
}
}
В моем проекте консольного приложения в каждом классе я объявляю:
private static readonly ICustomLog logger = myCustomLogManager.GetLogger(typeof(myClass));
Когда я захожу в myClass, нет проблем. Но если я использую другой класс, где я тоже веду журнал (скажем, myOtherClass), имя регистратора моего будущего журнала в myClass будет иметь значение «myOtherClass». Чтобы проиллюстрировать проблему, вот пример вывода:
- [Info] myProject.myClass: «Журнал из myClass!»
- [Info] myProject.myOtherClass: «Журнал из myOtherClass!»
- [Info] myProject.myOtherClass: «Второй журнал из myClass !!»
Это довольно сложно объяснить, и я надеюсь, что я достаточно ясен, но факт - это регистратор по умолчанию, после того, как что-то сделано в классе myOtherClass, это myProject.myOtherClass и не возвращается к myProject.myClass при входе в класс myClass .
Как я могу это исправить?
Спасибо за чтение и вашу помощь: -)