Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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#_Nlog - Fatal编程技术网

C# 从NLog中的目标获取布局

C# 从NLog中的目标获取布局,c#,nlog,C#,Nlog,我有一个NLog配置文件 LoggingConfiguration nLogLoggingConfiguration; 然后 我想从目标中得到布局,它似乎在内存中。当我在调试时将鼠标悬停在它上面时。我发现: 我想要的是 ${message}|${exception:format=tostring}|${stacktrace} 并非所有目标都有布局,因此必须获取从TargetWithLayout继承的项,然后才能调用布局对象上的ToString。例如: foreach (var targe

我有一个NLog配置文件

LoggingConfiguration nLogLoggingConfiguration;
然后

我想从目标中得到布局,它似乎在内存中。当我在调试时将鼠标悬停在它上面时。我发现:

我想要的是

 ${message}|${exception:format=tostring}|${stacktrace}

并非所有目标都有布局,因此必须获取从TargetWithLayout继承的项,然后才能调用布局对象上的ToString。例如:

foreach (var target in nLogLoggingConfiguration.AllTargets.OfType<TargetWithLayout>())
{
    string layoutString = target.Layout.ToString();
    Console.WriteLine(layoutString);
}

如果目标是TargetWithLayout类型,则为后续问题。我们是否可以将规则添加为var loggerRule=new loggingrulename,LogLevel.Fatal,target;?我的意思是var过滤器=新的ConditionBasedFilter;filter.Action=FilterResult.Log;filter.Condition=level==LogLevel.Fatal;var loggerRule=new loggingrulename,LogLevel.Fatal,target;loggerRule.Filters.Addfilter@我想是的。您只需将其添加到LoggingConfiguration的LoggerRules集合中。
foreach (var target in nLogLoggingConfiguration.AllTargets.OfType<TargetWithLayout>())
{
    string layoutString = target.Layout.ToString();
    Console.WriteLine(layoutString);
}