有没有办法用NLog创建一个命名记录器并按此名称过滤日志记录?

时间:2014-10-24 05:21:52

标签: c# .net nlog

有时我不希望在开发期间将所有内容记录到Visual Studio输出窗口(目标 - >调试器)。我想也许有一种方法可以命名一个特定的记录器(一个类)或几个记录器(来自多个类),这样在配置文件中我只能为我目前感兴趣的开发中的类启用日志。 / p>

目前我在所有课程中都有这个最常见的NLog系列:

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

和一个非常标准的配置,只需将日志呈现到输出窗口。

不幸的是,我没有找到如何按类启用/禁用记录器的运气。

1 个答案:

答案 0 :(得分:3)

正如我在评论中提到的,你可以使用NLog Conditions来评估和确定你想对结果做些什么。正如文档所说:

  

条件是与过滤器一起使用的过滤器表达式。它们由一个或多个测试组成。它们在when过滤器中用于确定是否将采取行动。

还有一个非常有用的例子:

<rules>
    <logger name="*" writeTo="file">
        <filters>
            <when condition="length('${message}') > 100" action="Ignore" />
            <when condition="equals('${logger}','MyApps.SomeClass')" action="Ignore" />
            <when condition="(level >= LogLevel.Debug and contains('${message}','PleaseDontLogThis')) or level==LogLevel.Warn" action="Ignore" />
            <when condition="not starts-with('${message}','PleaseLogThis')" action="Ignore" />
        </filters>
    </logger>
</rules>