Fab*_*ied 12 logging asp.net-core
根据https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging,建议的使用方式Microsoft.Extensions.Logging
似乎是通过依赖注入ILogger
对象.
在依赖注入不起作用(或不能正常工作)的情况下,建议的模式是什么,例如在扩展方法,类型初始值设定项,静态属性和其他传递一个ILogger
非常麻烦的静态成员中?
使用log4net(我的团队之前使用过),一个常见的模式是:
public static class SomeExtensions
{
private static readonly ILog s_log = LogManager.GetLogger(typeof(SomeExtensions));
public static void ExtensionMethod (this SomeType someType)
{
s_log.Info("...");
}
}
Run Code Online (Sandbox Code Playgroud)
是否有类似的既定或推荐模式Microsoft.Extensions.Logging
?
感谢 @chris-pratt 和 @shad指出ASP.NET Core 记录器方法不能很好地处理静态以及实际查找相关文档。
然而,在某些情况下,避免静力学是困难的或(主观上)不可取的。所以我的问题的重点是问Microsoft.Extensions.Logging
在这种情况下是否有任何既定的模式来处理。
该问题的唯一真正答案是@alexandre-pires的评论,他将我指向了这篇 Stackify 文章。除此之外,它展示了如何设置一个ILoggerFactory
可以从静态上下文中使用的集中式。但是,它的结论是继续使用 NLog 或 Serilog 并转发Microsoft.Extensions.Logging
到该库。