我有一个 Web API 应用程序。在应用程序的解决方案中,有几个项目。
所有的 API 都在一个项目中。并且有一个业务层项目。
我们想编写一个包含业务层项目中所有相关方法的日志记录类,我们将使用“企业库日志记录块”。
从业务层项目类中的 web.config 获取相关配置的正确过程是什么。
提前致谢。
我有一个 Web API 应用程序。在应用程序的解决方案中,有几个项目。
所有的 API 都在一个项目中。并且有一个业务层项目。
我们想编写一个包含业务层项目中所有相关方法的日志记录类,我们将使用“企业库日志记录块”。
从业务层项目类中的 web.config 获取相关配置的正确过程是什么。
提前致谢。
如果配置包含在 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 完全静态。)