【问题标题】: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 完全静态。)

    【讨论】:

      猜你喜欢
      • 2010-12-18
      • 1970-01-01
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      相关资源
      最近更新 更多