gpt4 book ai didi

c# - 在子类中使用父类记录器

转载 作者:太空狗 更新时间:2023-10-30 01:02:08 26 4
gpt4 key购买 nike

我有一个用于所有 Controller 的基类,记录器在其中定义:

public abstract class BaseService
{
private static readonly ILogger logger = LogManager.GetCurrentClassLogger();

protected ILogger Logger => logger;
}

public class ChildClass : BaseClass
{
public void DoStuff()
{
Logger.Info("Some info");
}
}

现在,当我使用子类中的 Logger 时,日志条目将 BaseService 显示为记录器。有没有办法告诉日志管理器为子类实例化记录器?

最佳答案

这里是你如何做到的:

public abstract class BaseService
{
protected ILogger Logger => LogManager.GetLogger(this.GetType().FullName);
}

请注意,GetLogger 会在内部缓存记录器(针对每个不同的名称),这样您就不会在每次获取 Logger 属性时都创建一个新的记录器。

这里的技巧是 this.GetType().FullName 将返回派生类型的名称,而不是 BaseService

关于c# - 在子类中使用父类记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35119222/

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