为什么Serilog要定义自己的ILogger?

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

我想扩展我的日志代码以登录到我的数据库。看来公认的方法是使用 Serilog 和

Serilog.Sinks.MsSqlServer
。所以我安装了这些软件包。

我的理解是Serilog实现了现有的

ILogger
接口。然而,Serilog 似乎还定义了一个
ILogger
接口。

有两个

ILoggers
会给我带来错误。如果我禁用 Microsoft 的
ILogger
,则会收到
ILogger
不接受类型参数的错误。例如,以下内容将无法编译:

public MyClass(ILogger<MyClass> logger)
{
    // ...
}

我再次认为 Serilog 只是实现了

ILogger
接口。我不明白为什么这给我带来这么多麻烦。

c# .net-core logging serilog ilogger
1个回答
0
投票

拥有两个 ILogger 会给我带来错误

不,您定义的错误包含是错误的根源。相同的接口名称是完全可以的,除非你盲目地使用 using 语句。

如果我禁用 Microsoft 的 ILogger,则会收到 ILogger 不会出现的错误 接受类型参数

是的,不同的接口。您知道可以在类定义上添加命名空间前缀,或者在 using 中重命名类吗?

我以为Serilog只是实现了ILogger接口。

鉴于它们具有非常不同的附加功能,为什么要这样做?他们提供自己的界面是有原因的。

也就是说:

如果您可以使用 MS ILogger,为什么还要到处使用 Serilog?这就是问题的原因。如果您完全同意仅使用 microsoft 实现,则没有理由到处引用 serilog 实现。

© www.soinside.com 2019 - 2024. All rights reserved.