Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有[assembly:]的log4net配置_C#_Configuration_Assemblies_Log4net - Fatal编程技术网

C# 带有[assembly:]的log4net配置

C# 带有[assembly:]的log4net配置,c#,configuration,assemblies,log4net,C#,Configuration,Assemblies,Log4net,我很好奇下面这行代码是如何在程序集中配置log4net的: [assembly: log4net.Config.XmlConfigurator(Watch=true)] 我猜这是在运行时调用“main()”之前调用的,但这是什么时候发生的,其含义是什么?是否有其他框架/库使用此assembly属性来加载这样的初始上下文?与在main()中调用“Configure”方法相比,这样做有什么优点/缺点吗?这样做的优点是,代码在主代码之前初始化,并且在静态初始化之前初始化 这意味着您可以在静态构造函数

我很好奇下面这行代码是如何在程序集中配置log4net的:

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

我猜这是在运行时调用“main()”之前调用的,但这是什么时候发生的,其含义是什么?是否有其他框架/库使用此assembly属性来加载这样的初始上下文?与在main()中调用“Configure”方法相比,这样做有什么优点/缺点吗?

这样做的优点是,代码在主代码之前初始化,并且在静态初始化之前初始化

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

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

“我猜在运行时调用“main()”之前的某个时候会调用它,但这是什么时候发生的,其含义是什么?”


根据:

使用属性可以更清楚地定义 应用程序的配置将从加载。不管它值多少钱 注意,属性纯粹是被动的。它们是信息 只有因此,如果使用配置属性,则必须调用 log4net允许它读取属性


因此,我猜您仍然需要调用
XmlConfigurator.Configure()
方法或
LogManager.getLogger()

此功能在log4net手册的“配置属性”部分中有说明。