【发布时间】:2020-07-08 06:30:13
【问题描述】:
对于日志记录,开发人员使用日志记录包,例如:Nlog、SeriLog、...
而asp.net核心有Microsoft.Extenstions.Logging.ILogger?
不是ILogger的asp.net core记录日志吗?
如果ILogger 可以记录日志,不使用任何其他包不是更好吗?
如果ILogger可以记录日志,那为什么开发者不单独使用呢?
如果ILogger 不能单独记录日志而其他包可以,那么ILogger 与其他日志包一起使用而不是单独使用一个日志包有什么好处?
【问题讨论】:
-
ILogger只是一个接口。您可以使用框架自己的接口,但是您的应用程序会“锁定”到这些接口。这意味着,稍后更改日志框架需要付出很大的努力。如果您使用 MSILogger接口,您可以通过任何适合您要求的框架轻松支持它,并在以后轻松更改它,因为您需要更改的是依赖注入配置中的一些行并创建合适的记录器配置. -
例如,虽然
ILogger是围绕结构化日志设计的 [Log.LogDebug("MyVar is {Something}", myVar)vsLog.LogDebug($"MyVar is {myVar}")],但它实际上并不支持它(本质上是执行字符串格式)。您可以采用支持结构化日志记录的框架(例如 Serilog)并使用它返回ILogger,而无需更改您正在编码的接口。
标签: c# asp.net-core logging