gpt4 book ai didi

使用 NLog 进行日志记录所需的 C# 派生类类型

转载 作者:太空狗 更新时间:2023-10-29 17:39:28 25 4
gpt4 key购买 nike

我们使用 NLog 登录 C# MVC3 网络应用程序。我们所有的 Controller 都扩展了一个自定义基础“ApplicationController”,使我们能够访问经常需要的方法和 s 成员。

我希望所有 Controller 都可以通过这个基类访问 Logger,但希望了解日志语句源自哪个派生类的详细信息。

我们的应用程序 Controller 看起来像这样:

public abstract class ApplicationController : Controller
{
protected Logger _logger;
protected virtual Logger Logger
{
get { return _logger ?? (_logger = LogManager.GetCurrentClassLogger()); }
}

protected ApplicationController()
{
Context = new Entities();
}

如果派生 Controller 没有覆盖记录器,则所有语句都将显示它们源自应用程序 Controller 。目前,我在所有派生 Controller 中都有基本相同的 Logger 语句。例如:

public class PropertyController : ApplicationController
{
private readonly DatatapeService _datatapeService;
private readonly PropertyService _propertyService;
protected override Logger Logger
{
get { return _logger ?? (_logger = LogManager.GetCurrentClassLogger()); }
}

显然,这是糟糕的实现实践。

  1. 我怎样才能把它弄干?具体来说,我对C#的理解是什么缺乏完成这个特定任务?
  2. 有没有我应该遵循的日志记录模式直接记录类 (NLog)?

TIA!

最佳答案

我不熟悉 NLog 但在 Log4Net 中语法LogManager.GetLogger(this.GetType()) 将完成您想要的。 GetType 返回继承层次结构中的叶类型,即使在基 ApplicationController 类中调用,当记录器首次创建时(即:首次访问 Logger 属性时)它将使用 PropertyController

类型实例化它

关于使用 NLog 进行日志记录所需的 C# 派生类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8711348/

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