NLog:将记录器名称限制为枚举或其他结构

时间:2018-05-16 14:36:21

标签: c# logging nlog

我正在使用NLog进行一些日志记录,并且感谢这些答案: Getting Logger Name into Excel file with NLog https://stackoverflow.com/questions/50123661/nlog-in-c-sharp-with-severity-and-categories?noredirect=1#comment87344565_50123661

我能够将不同类型的事件(例如:" Thermal","数据库"等)记录到单个文件中,记录器字段显示事件类型。一个人简单地称之为:

NLog.LogManager.GetLogger("Database").Debug("Error writing to DB");

这一切都很好,可能就足够了。但是,您会注意到任何程序员都可以自由地在GetLogger中输入他们想要的任何名称并拼错它。 " GetLogger(" Datobuse&#34)。如果程序员必须从枚举或其他结构中进行选择,那将是很好的:

NLog.LogManager.GetLogger(LoggerNames.Database).Debug("Error writing to DB");

这似乎是一个常见的问题,可能已经有了一个优雅的解决方案。我可以想象覆盖LogManager类但不确定具体细节。请注意,LogManager是NLog库中的公共静态类,因此不清楚如何隐藏它。此外,还有一个很好的属性,如果你在app项目中填写一次配置文件,只要你包含NLog作为参考,配置文件就可以完美地适用于解决方案中的所有项目。

我将沿着创建使用NLog库的库项目的路径,然后将其包含在我的主项目中,除非已经有了一个很好的解决方案。我打赌有,但没有看到一个。

谢谢,

戴夫

1 个答案:

答案 0 :(得分:0)

如果您有“全局”记录器名称,那么简单的解决方案就是使用全局记录器实例。

多个位置可以使用相同的全局NLog Logger实例,而不会遇到线程问题。