C# 使用NLog输出到两个日志文件之一
我有一个单线程的.NET Winforms应用程序。我使用静态NLog记录器使用以下语法记录错误:C# 使用NLog输出到两个日志文件之一,c#,nlog,C#,Nlog,我有一个单线程的.NET Winforms应用程序。我使用静态NLog记录器使用以下语法记录错误: MyLogger.Log.Error("Error occurred..."); 根据我的一个NLog.config定义的目标和一个NLog.config定义的规则,日志错误输出总是写入一个名为“errors.txt”的文件。有时我希望将错误写入“errors2.txt”。在不创建另一个静态记录器实例的情况下,如何执行此操作?您可以在配置中使用过滤器,或者将文件名传递给记录器调用 注:这些示例使
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目标
传递文件名
将文件名作为属性传入。也许您可以在staticLog
方法中设置一个默认属性
另见
记录器调用:
MyLogger.Log.WithProperty(“文件名”,“error1.txt”).Error(“发生错误…”);
MyLogger.Log.WithProperty(“文件名”,“error2.txt”)。错误(“发生错误…”);
如果创建另一个静态记录器实例可以实现您的目标,那么创建另一个静态记录器实例会有什么问题?Stackoverflow是一种提问的媒介(即使是愚蠢的一次)并相互学习:这将导致重复的代码,这足以让我理解您的问题。感谢您讲授.WithProperty并提供传递文件名的想法。好极了