使用 [assembly:] 配置 log4net

7

我对以下代码在程序集中配置log4net的工作原理感到好奇:

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

我猜测这个方法在运行时调用“main()”之前被调用,但是这是什么时候发生的?还有哪些框架/库使用此程序集属性来加载初始上下文?与在“main()”中调用“Configure”方法相比,这样做是否有优缺点?

2个回答

8
这样做的好处是代码在主代码和静态初始化之前就被初始化了。
这意味着您可以在静态构造函数中使用log4net日志记录。如果没有一种预初始化log4net的方法,在静态构造函数中,您无法确定代码是否已正确初始化。
这个领域似乎没有很好的文档(或者说很难找到),但我认为调用方法的初始化是在程序集加载时执行的。

1
此功能在log4net手册中有详细说明,可参考http://logging.apache.org/log4net/release/manual/configuration.html的“配置属性”一节。 - Designpattern

0
“我猜想这个函数在运行时调用“main()”之前的某个时间点被调用,但是它是在什么时候发生的,以及有什么影响?”
根据log4net文档
使用属性可以更清晰地定义应用程序配置将从何处加载的方法。但值得注意的是,属性纯粹是被动的。它们只是信息。因此,如果您使用配置属性,则必须调用log4net以允许其读取属性。
所以我想你仍然需要调用XmlConfigurator.Configure()方法或LogManager.getLogger()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接