Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有方法使用NLog创建命名记录器,并按此名称筛选日志记录?_C#_.net_Nlog - Fatal编程技术网

C# 是否有方法使用NLog创建命名记录器,并按此名称筛选日志记录?

C# 是否有方法使用NLog创建命名记录器,并按此名称筛选日志记录?,c#,.net,nlog,C#,.net,Nlog,有时我不想在开发期间将所有内容都记录到Visual Studio输出窗口(目标-->调试器)。我想也许有一种方法可以命名一个特定的记录器(一个类)或几个记录器(来自多个类),这样在配置文件中,我可以只为我目前感兴趣的开发中的类启用日志记录 目前,我在所有课程中都有一条最常见的NLog线: private static readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); 这是一个非常标准的配置,只需将日志呈

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

目前,我在所有课程中都有一条最常见的NLog线:

private static readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
这是一个非常标准的配置,只需将日志呈现到输出窗口


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

正如我在评论中提到的,您可以使用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>


您看到条件选项了吗?现在我有了,我想这正是我想要的。如果我olny已经搜索了NLog条件……如果他想要筛选特定的命名记录器,请使用
name=“*.ClassName”
。如果需要显式命名的记录器,请使用
logger=LogManager.GetLogger(“ExplicitName”)