【问题标题】:Enterprise Library Logging Block Get Configuration From web.config企业库日志记录块从 web.config 获取配置
【发布时间】:2015-10-12 09:36:38
【问题描述】:
我有一个 Web API 应用程序。在应用的解决方案中,有几个项目。
所有 API 都在一个项目中。业务层有一个项目。
我们想编写一个包含业务层项目中所有相关方法的日志类,我们将使用“企业库日志块”。
从业务层项目类的web.config中获取相关配置的正确流程是什么。
提前致谢。
【问题讨论】:
标签:
c#
logging
configuration
enterprise-library
enterprise-library-6
【解决方案1】:
如果配置包含在 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 完全静态。)