2015-07-09 1 views
1

Я использую NLog в проекте службы Windows. Мы используем EasyNetQ для обмена сообщениями, и я расширил EasyNetQLogger, чтобы в моих журнальных файлах появлялись сообщения LogNet.NLog Logger получает неправильное имя

Класс, как это:

public class EasyNetQLogger : IEasyNetQLogger 
{ 

    private readonly Logger _traceLogger; 

    public EasyNetQLogger() 
    { 
     _traceLogger = LogManager.GetCurrentClassLogger(); 
    } 

    public void DebugWrite(string format, params object[] args) 
    {    
     _traceLogger.Trace(String.Format(format, args));   
    } 

    public void InfoWrite(string format, params object[] args) 
    { 
     _traceLogger.Info(String.Format(format, args)); 
    } 

    public void ErrorWrite(string format, params object[] args) 
    { 
     _traceLogger.Error(String.Format(format, args)); 
    } 

    public void ErrorWrite(Exception exception) 
    { 
     _traceLogger.Error("Exception in EasyNetQ", exception); 
    } 
} 

Когда я создаю автобус-экземпляр, я делаю это, как это в моем классе ServiceController:

var bus = RabbitHutch.CreateBus(config.MessageBus, x => x.Register<IEasyNetQLogger>(_ => new EasyNetQLogger())); 

Мое имя регистратор становится «ServiceController» а не .... EasyNetQLogger. Я хочу, чтобы сообщение EasyNetQ появилось в отдельном файле, но я не могу, поскольку в этом классе ServiceController есть другие вещи.

Кто-нибудь знает, как я мог бы достичь желаемого имени журнала «EasyNetQLogger»?

ответ

0

Определяя _traceLogger как статические делает трюк:

public class EasyNetQLogger : IEasyNetQLogger 
{ 
    private static readonly Logger _traceLogger; 

    static EasyNetQLogger() 
    { 
     _traceLogger = LogManager.GetCurrentClassLogger(); 
    } 

    //... 
}