C# 带有[assembly:]的log4net配置
我很好奇下面这行代码是如何在程序集中配置log4net的:C# 带有[assembly:]的log4net配置,c#,configuration,assemblies,log4net,C#,Configuration,Assemblies,Log4net,我很好奇下面这行代码是如何在程序集中配置log4net的: [assembly: log4net.Config.XmlConfigurator(Watch=true)] 我猜这是在运行时调用“main()”之前调用的,但这是什么时候发生的,其含义是什么?是否有其他框架/库使用此assembly属性来加载这样的初始上下文?与在main()中调用“Configure”方法相比,这样做有什么优点/缺点吗?这样做的优点是,代码在主代码之前初始化,并且在静态初始化之前初始化 这意味着您可以在静态构造函数
[assembly: log4net.Config.XmlConfigurator(Watch=true)]
我猜这是在运行时调用“main()”之前调用的,但这是什么时候发生的,其含义是什么?是否有其他框架/库使用此assembly属性来加载这样的初始上下文?与在main()中调用“Configure”方法相比,这样做有什么优点/缺点吗?这样做的优点是,代码在主代码之前初始化,并且在静态初始化之前初始化 这意味着您可以在静态构造函数中使用log4net日志记录。如果没有预先初始化log4net的方法,在静态构造函数中,您永远无法确定代码是否已正确初始化 这个区域似乎没有很好的文档记录(或者很容易找到),但是我假设调用方法的初始化是在程序集加载时执行的 “我猜在运行时调用“main()”之前的某个时候会调用它,但这是什么时候发生的,其含义是什么?”
根据: 使用属性可以更清楚地定义 应用程序的配置将从加载。不管它值多少钱 注意,属性纯粹是被动的。它们是信息 只有因此,如果使用配置属性,则必须调用 log4net允许它读取属性
因此,我猜您仍然需要调用
XmlConfigurator.Configure()
方法或LogManager.getLogger()
此功能在log4net手册的“配置属性”部分中有说明。