我有一个Web API应用程序。在应用程序的解决方案中,有几个项目。
所有API都在一个项目中。还有一个业务层项目。
我们想要编写一个包含业务层项目中所有相关方法的日志记录类,我们将使用“Enterprise Library Logging Block”。
从业务层项目的类中的web.config获取相关配置的正确步骤是什么。
提前致谢。
答案 0 :(得分:0)
如果配置包含在web.config中,并且业务层程序集在与Web API应用程序相同的appdomain中执行,那么您唯一需要做的就是引导正在使用的块(在这种情况下,它听起来像只记录)。
您可以在应用程序启动时执行此操作(例如App_Start):
Logger.SetLogWriter(new LogWriterFactory().Create());
在这种方法中,业务层将使用静态外观Logger.Write
来编写LogEntries。
更好的方法是在LogWriter周围创建一个小包装器,它将引导块并公开LogWriter
以便在业务层(以及需要记录的任何地方)中使用。这对于依赖注入来说更友好一些,因为它易于在容器中注册并且可以作为依赖项传递。
public class Logger
{
private Lazy<LogWriter> logWriter = new Lazy<LogWriter>(() =>
{
LogWriterFactory factory = new LogWriterFactory();
return factory.Create();
});
public LogWriter LogWriter
{
get { return logWriter.Value; }
}
}
由于内部LogWriter是一个单例,并且您只想在自定义Logger类为单例时进行引导。 (如果你不关心有一个实例,你可以让Logger完全静止。)