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