NLog Logger名称错误

时间:2015-07-09 11:58:19

标签: logging windows-services nlog

我在Windows服务项目中使用NLog。我们使用EasyNetQ进行消息传递,并且我已经扩展了EasyNetQLogger,以便在我的日志文件中显示EasyNetQ-logmessages。

班级是这样的:

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()));

我的记录器名称变为&#34; ServiceController&#34;而不是...... EasyNetQLogger。我希望EasyNetQ消息出现在一个单独的文件中,但我不能,因为此ServiceController类中还有其他内容。

有谁知道如何实现所期望的&#34; EasyNetQLogger&#34;记录器名称?

1 个答案:

答案 0 :(得分:0)

_traceLogger定义为静态可以解决问题:

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

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

    //...
}