7

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

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

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

4

2 回答 2

8

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

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

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

于 2009-03-20T14:00:33.937 回答
0

“我猜这会在运行时调用“main()”之前的某个时候被调用,但是什么时候会发生,这意味着什么?


根据log4net 文档

使用属性可以更清晰地定义应用程序的配置将从何处加载。不过值得注意的是,属性是纯被动的。它们只是信息。因此,如果您使用配置属性,您必须调用 log4net 以允许它读取属性。

所以我想你仍然必须调用XmlConfigurator.Configure()方法或LogManager.getLogger().

于 2013-01-01T20:34:28.853 回答