NLog.Extensions.Logging 和自定义继承的记录器

问题描述 投票:0回答:1

我正在详细说明一个自定义 NLog 记录器,我们将其称为 MyLogger 类。它有自己的 Trace()、Debug()、Info() 等方法。我想使用经典的 NLog.config 文件,如果可能的话,还可以手动注册一些自己的自定义布局渲染器。 是否可以在 POC 消费者应用程序中进行初始设置或以某种方式扩展 NLog.Extensions.Logging 以使用 MyLogger?

或者如果不幸没有,我想尝试详细说明一个折衷方案 - 我的意思是至少以某种方式在绑定到 MS 日志基础设施的 NLog 记录器和我自己的一些服务中使用的 MyLogger 之间共享 NLog.config。可能的设置会是什么样子?

(已更新) 添加更多详细信息:

...(配置,Microsoft.Extensions.Http.Poly,...)

<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
<PackageReference Include="NLog.Extensions.Logging" Version="5.3.8" />
<PackageReference Include="NLog" Version="5.2.8" />
asp.net .net dependency-injection nlog
1个回答
0
投票

所以你需要的是一个装饰器,这是一个很棒的示例

abstract class Decorator : Component
{
    protected Component _component;

    public Decorator(Component component)
    {
        this._component = component;
    }

    public void SetComponent(Component component)
    {
        this._component = component;
    }

当组件是 NLOG 时遵循此逻辑,并选择如何注入 NLOG(通过构造函数或通过方法)。

您可以将 SetLogger 方法添加到

MyLogger
,并将其保留为私有属性,那么 info() 应该类似于(只需确保其不为空):

    public Method(string message)
    {
        // You custom logic...
        _component.Method(message);
    }
}

使用方法

    MyLogger logger = new MyLogger();
    logger.SetNLog(nlogIntance)

    logger.Info("Hello world.");
© www.soinside.com 2019 - 2024. All rights reserved.