c# – 有没有办法用NLog创建一个命名的记录器并通过这个名称过滤记录?

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

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

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

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

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

解决方法:

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

Conditions are filter expressions used with the when filter. They consist of one or more tests. They >are used in the when filter to determine if an action will be taken.

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

<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>
上一篇:c# – NLog:为什么配置变量是强制性的?


下一篇:PAT* 1001 Battle Over Cities - Hard Version (35 分)(最小生成树)