0

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

所有的 API 都在一个项目中。并且有一个业务层项目。

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

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

提前致谢。

4

1 回答 1

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 完全静态。)

于 2015-07-23T17:35:36.467 回答