C# 如何处理没有循环引用的系统程序集的错误日志记录?
我有一个包装XML配置文件的.NET程序集。配置文件包含许多系统设置,包括错误日志文件的路径和文件名格式化信息。其他程序集通过singleton类引用此程序集:C# 如何处理没有循环引用的系统程序集的错误日志记录?,c#,.net,circular-dependency,error-logging,C#,.net,Circular Dependency,Error Logging,我有一个包装XML配置文件的.NET程序集。配置文件包含许多系统设置,包括错误日志文件的路径和文件名格式化信息。其他程序集通过singleton类引用此程序集: public sealed class SettingsManager { private static volatile SettingsManager manager; private static object syncRoot = new Object(); //... private Set
public sealed class SettingsManager
{
private static volatile SettingsManager manager;
private static object syncRoot = new Object();
//...
private SettingsManager()
{
//load XML config file
}
public static SettingsManager Manager
{
get
{
if (manager == null)
{
lock (syncRoot)
{
if (manager == null)
manager = new SettingsManager();
}
}
return manager;
}
}
//......
//Methods getting and setting configuration data
//......
}
我还有一个Logging
程序集,它为系统其余部分中的错误处理和使用情况跟踪提供类。它引用设置
库以确定将错误保存到何处:
SettingsManager.Manager.GetCurrentErrorFileName();
因此,设置
程序集是项目中其他程序集的核心依赖项。但是如果我需要在设置
库中记录错误,我不能很好地将记录
程序集作为设置
的参考,因为我将有一个循环参考
我遇到的问题是,如何处理设置
库中的XML文件例程可能生成的错误?
我是否硬编码这些错误要写入的默认文件位置?
在这种情况下,最佳做法是什么
我考虑过系统事件日志,但这些程序集将用于Windows服务和托管的MVC网站。所以我不认为事件日志是一个选项 两个字
更有可能的是,您的日志记录
程序集完全不需要了解设置
程序集。它可能应该:
Logger.LogFilePath = Settings.Manager.GetCurrentErrorFileName();
我开发的大多数应用程序都是小型的内部项目,或者简单的.NET或MVC网站。但我对这个项目的了解越深入,我对IoC和依赖注入的概念就越感兴趣。但对我来说,这仍然是一个新概念。如果你知道关于IoC和依赖注入的其他好的参考资料,我很想知道它们是什么。(我现在正在读你链接到的di文章)。我喜欢这篇:,但这是一篇很长的文章。这是一本更短的书。或者如果你想要一本关于这个主题的书,你可以去马克·希曼那里看看。我想我要感谢你(或者责备你!)。我正在进行一些重大的重构。幸运的是,它还在项目的早期阶段,所以我可以负担得起。现在我已经理解了依赖注入的一般概念,我意识到我已经基本上做到了。但是,通过使用接口而不是具体类型来“解耦”类的想法对我来说是新的,也是促使重构的原因。这个项目也是我第一次真正尝试TDD。这是一条崎岖不平的路,但我马上就到了。我肯定已经看到了一些短期和长期的好处。