我想扩展我的日志代码以登录到我的数据库。看来公认的方法是使用 Serilog 和
Serilog.Sinks.MsSqlServer
。所以我安装了这些软件包。
我的理解是Serilog实现了现有的
ILogger
接口。然而,Serilog 似乎还定义了一个 ILogger
接口。
有两个
ILoggers
会给我带来错误。如果我禁用 Microsoft 的 ILogger
,则会收到 ILogger
不接受类型参数的错误。例如,以下内容将无法编译:
public MyClass(ILogger<MyClass> logger)
{
// ...
}
我再次认为 Serilog 只是实现了
ILogger
接口。我不明白为什么这给我带来这么多麻烦。
拥有两个 ILogger 会给我带来错误
不,您定义的错误包含是错误的根源。相同的接口名称是完全可以的,除非你盲目地使用 using 语句。
如果我禁用 Microsoft 的 ILogger,则会收到 ILogger 不会出现的错误 接受类型参数
是的,不同的接口。您知道可以在类定义上添加命名空间前缀,或者在 using 中重命名类吗?
我以为Serilog只是实现了ILogger接口。
鉴于它们具有非常不同的附加功能,为什么要这样做?他们提供自己的界面是有原因的。
也就是说:
如果您可以使用 MS ILogger,为什么还要到处使用 Serilog?这就是问题的原因。如果您完全同意仅使用 microsoft 实现,则没有理由到处引用 serilog 实现。