我正在详细说明一个自定义 NLog 记录器,我们将其称为 MyLogger 类。它有自己的 Trace()、Debug()、Info() 等方法。我想使用经典的 NLog.config 文件,如果可能的话,还可以手动注册一些自己的自定义布局渲染器。 是否可以在 POC 消费者应用程序中进行初始设置或以某种方式扩展 NLog.Extensions.Logging 以使用 MyLogger?
或者如果不幸没有,我想尝试详细说明一个折衷方案 - 我的意思是至少以某种方式在绑定到 MS 日志基础设施的 NLog 记录器和我自己的一些服务中使用的 MyLogger 之间共享 NLog.config。可能的设置会是什么样子?
(已更新) 添加更多详细信息:
MyLogger 类与 NLog 扩展记录器示例中的实现非常相似
我还添加了带有特定方法签名的 IMyLogger 接口
控制台项目包含以下参考资料
...(配置,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" />
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.");