【发布时间】:2017-09-29 06:34:34
【问题描述】:
根据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("...");
}
}
Microsoft.Extensions.Logging 是否有类似的既定或推荐模式?
【问题讨论】:
-
我首先想到的是工厂。希望这篇文章对stackify.com/net-core-loggerfactory-use-correctly有帮助。
-
要么使用服务定位器 anit-pattern,要么公开一个可以在启动期间配置的公共静态成员,以允许静态类按需要运行。
-
@AlexandrePires 感谢您的链接,我可能会选择“位于中心的静态类”选项。
-
@Nkosi 是的,我实际上想知道
Microsoft.Extensions.Logging是否存在既定模式。 (如“大多数人使用服务定位器”或“ASP.NET Core 团队建议使用在启动期间配置的单例”。) -
@DmitryPavlov 这个问题似乎没有提到从静态位置进行日志记录。
标签: logging asp.net-core