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

t3c*_*b0t 5 .net c# nlog

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

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

private static readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
Run Code Online (Sandbox Code Playgroud)

以及一个非常标准的配置,它只是将日志呈现到输出窗口。

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

elv*_*vin 4

正如我在评论中提到的,您可以使用 NLog条件来评估并确定您想要对结果执行的操作。正如文档所说:

条件是与when 过滤器一起使用的过滤器表达式。它们由一项或多项测试组成。它们>在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>
Run Code Online (Sandbox Code Playgroud)