【问题标题】:log4net configuration with [assembly:]使用 [程序集:] 进行 log4net 配置
【发布时间】:2009-03-15 23:36:27
【问题描述】:

我很好奇以下行如何在程序集中配置 log4net:

[assembly: log4net.Config.XmlConfigurator(Watch=true)]

我猜这会在运行时调用“main()”之前的某个时间被调用,但是什么时候会发生,这意味着什么?是否有其他框架/库使用此程序集属性来加载这样的初始上下文?与在 main() 中调用“配置”方法相比,这样做有什么优点/缺点吗?

【问题讨论】:

    标签: c# configuration assemblies log4net


    【解决方案1】:

    这样做的好处是代码在你的主代码和静态初始化之前被初始化。

    这意味着,例如,您可以在静态构造函数中使用 log4net 日志记录。如果没有预初始化 log4net 的方法,在静态构造函数中,您永远无法确定代码是否已正确初始化。

    这个区域似乎没有很好的文档记录(或者无论如何也很容易找到),但我假设调用方法的初始化是在程序集加载时执行的。

    【讨论】:

    【解决方案2】:

    “我猜这会在运行时调用“main()”之前的某个时间被调用,但什么时候会发生,有什么影响?”


    根据log4net documentation

    使用属性可以是一种更清晰的方法来定义 应用程序的配置将从中加载。不过值得 注意到属性纯粹是被动的。它们是信息 只要。因此,如果您使用配置属性,则必须调用 log4net 允许它读取属性。

    所以我猜你仍然需要调用XmlConfigurator.Configure() 方法或LogManager.getLogger()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-17
      相关资源
      最近更新 更多