【问题标题】:Unable to filter on class name (in NLog.config) when using anotar catel nlog logging使用 anotar catel nlog 日志记录时无法过滤类名(在 NLog.config 中)
【发布时间】:2014-01-25 13:53:12
【问题描述】:

我正在使用 anotar catel fody 登录我的应用程序。

在 NLog.config 中,我想为某些类使用不同的级别。示例配置

<logger name="SpaceA.*"
        minlevel="Info"
        writeTo="file"
        final="true" />
<logger name="*"
        minlevel="Debug"
        writeTo="file" />

我创建了一个派生自 catel 的 LogListenerBase 的 NLogListener 类。

public class NLogListener : LogListenerBase
{
    private static readonly NLog.Logger Log = NLog.LogManager.GetCurrentClassLogger();

    protected override void Debug(ILog log, string message, object extraData)
    {
        Log.Debug(message);
    }

    protected override void Info(ILog log, string message, object extraData)
    {
        Log.Info(message);
    }

    protected override void Warning(ILog log, string message, object extraData)
    {
        Log.Warn(message);
    }

    protected override void Error(ILog log, string message, object extraData)
    {
        Log.Error(message);
    }
    #endregion Methods
}

在我的代码中,我使用 Catel Anotar Fody:

LogTo.Debug("Starting something...");

现在无论我在哪里使用日志记录,它都显示为来自我定义 LogListerer 的命名空间。

我做错了什么,因此我是否必须进行更改才能像通常那样过滤类名上的 NLog?

【问题讨论】:

    标签: nlog catel fody


    【解决方案1】:

    问题是你在 LogListener 中获取了当前的类记录器:

    private static readonly NLog.Logger Log = NLog.LogManager.GetCurrentClassLogger();
    

    这样,您总是登录到 NLogListener 类型。您应该为每个条目获取正确的记录器类型:

    protected override void Debug(ILog log, string message, object extraData)
    {
        var nlog = NLog.LogManager.GetClassLogger(log.TargetType);
        nlog.Debug(message);
    }
    

    【讨论】:

    • 感谢 Geert,这是有道理的 :) 但是当我这样做时,我在调用 NLog.LogManager.GetCurrentClassLogger(log.TargetType) 时遇到以下错误:“无法访问类型的构造函数:VES。 Framework.AppDomainExtensions。是否授予了所需的权限?如果我在静态类中有日志消息调用,这似乎会发生。有什么想法吗?
    • 好的,改变对 GetLogger(log.TargetType.ToString()) 的调用就成功了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2016-05-02
    • 2017-09-29
    • 1970-01-01
    相关资源
    最近更新 更多