Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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,我有一个单线程的.NET Winforms应用程序。我使用静态NLog记录器使用以下语法记录错误: MyLogger.Log.Error("Error occurred..."); 根据我的一个NLog.config定义的目标和一个NLog.config定义的规则,日志错误输出总是写入一个名为“errors.txt”的文件。有时我希望将错误写入“errors2.txt”。在不创建另一个静态记录器实例的情况下,如何执行此操作?您可以在配置中使用过滤器,或者将文件名传递给记录器调用 注:这些示例使

我有一个单线程的.NET Winforms应用程序。我使用静态NLog记录器使用以下语法记录错误:

MyLogger.Log.Error("Error occurred...");

根据我的一个NLog.config定义的目标和一个NLog.config定义的规则,日志错误输出总是写入一个名为“errors.txt”的文件。有时我希望将错误写入“errors2.txt”。在不创建另一个静态记录器实例的情况下,如何执行此操作?

您可以在配置中使用过滤器,或者将文件名传递给记录器调用

注:这些示例使用NLog 4.6.3中介绍的
.WithProperty
(在NLog
记录器上)

过滤器 在记录器规则中使用过滤器,我们使用LogFinal,因此我们只需要一次规则(第二个记录器规则不需要)


记录器调用:

MyLogger.Log.Error(“发生错误…”);//写入file-error1目标
MyLogger.Log.WithProperty(“目标”,“错误2”)。错误(“发生错误…”);//写入file-error2目标
传递文件名 将文件名作为属性传入。也许您可以在static
Log
方法中设置一个默认属性

另见


记录器调用:

MyLogger.Log.WithProperty(“文件名”,“error1.txt”).Error(“发生错误…”);
MyLogger.Log.WithProperty(“文件名”,“error2.txt”)。错误(“发生错误…”);

如果创建另一个静态记录器实例可以实现您的目标,那么创建另一个静态记录器实例会有什么问题?Stackoverflow是一种提问的媒介(即使是愚蠢的一次)并相互学习:这将导致重复的代码,这足以让我理解您的问题。感谢您讲授.WithProperty并提供传递文件名的想法。好极了