gpt4 book ai didi

c# - 实例化后如何找到 log4net 实例?

转载 作者:行者123 更新时间:2023-11-30 16:19:26 29 4
gpt4 key购买 nike

我在 mvc4 应用程序中使用 log4net(用于学术目的)。我在 global.asaxApplication_Start() 方法中调用此方法。

log4net.Config.XmlConfigurator.Configure();

然后在我的应用程序的任何 Controller 中我都可以调用这个方法:

 ILog _logger = LogManager.GetLogger(typeof(T));

问题是,当我在 Application_Start() 方法中调用 Configure() 方法时,我没有在任何变量中存储对它的引用, GetLogger() 方法如何知道要查找的位置,更准确地说,它是如何找到 log4net 实例的?

就个人而言,我无法想象它的路径(除非我知道它加载的内存位置)。

最佳答案

Log4net 将对它的引用存储在一个静态变量中。 GetLogger 方法可以访问该变量并返回适当的值。 (实际上,我有点过于简单化了。有关完整详细信息,请参阅 log4net 源代码。)

这是 the singleton pattern 的变体.

顺便说一句,您可以让 log4net 创建多个记录器实例(正如我所说,它是单例的一种变体)。为此,请通过 logger element 配置额外的记录器。 ,然后将您通过元素的 name 属性分配的名称传递给 LogManager.GetLogger()GetLogger 方法将使用传递给它的名称作为相应静态记录器实例的查找键,并在您第一次请求它时创建该实例。

关于c# - 实例化后如何找到 log4net 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15341878/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com