企业库日志记录块从web.config获取配置

时间:2015-07-22 13:19:16

标签: c# logging configuration enterprise-library enterprise-library-6

我有一个Web API应用程序。在应用程序的解决方案中,有几个项目。

所有API都在一个项目中。还有一个业务层项目。

我们想要编写一个包含业务层项目中所有相关方法的日志记录类,我们将使用“Enterprise Library Logging Block”。

从业务层项目的类中的web.config获取相关配置的正确步骤是什么。

提前致谢。

1 个答案:

答案 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完全静止。)