我在我的控制器上使用依赖注入正好记录,现在我需要从静态类中记录一些东西.
如何从静态类登录?
我不能使用依赖注入,因为它是静态的,我不能只将现有的logger对象传递给静态类,因为它在日志文件中会有错误的类名.
换句话说,如何从静态类中的loggerfactory中获取记录器?
我遇到了一个类似的问题,他们指出了一篇关于静态类中loggerfactory的文章,但实际上并没有工作,因为我无法从中获取新的记录器,因为它不会接受静态类作为参数:
“静态类型不能用作类型参数”
解决方法
解决方案是在启动时初始化的实用程序静态类中对LoggerFactory进行静态引用:
/// <summary> /// Shared logger /// </summary> internal static class ApplicationLogging { internal static ILoggerFactory LoggerFactory { get; set; }// = new LoggerFactory(); internal static ILogger CreateLogger<T>() => LoggerFactory.CreateLogger<T>(); internal static ILogger CreateLogger(string categoryName) => LoggerFactory.CreateLogger(categoryName); }
你初学Startup.cs:
public Startup(ILogger<Startup> logger,ILoggerFactory logFactory,IHostingEnvironment hostingEnvironment) { _log = logger; _hostingEnvironment = hostingEnvironment; Util.ApplicationLogging.LoggerFactory = logFactory;//<===HERE }
然后你可以构建一个记录器来使用静态类,如下所示:
internal static class CoreJobSweeper { private static ILogger log = Util.ApplicationLogging.CreateLogger("CoreJobSweeper");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。