- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
创建 ILogger
在扩展方法中,我存储了一个 ILoggerFactory
在静态类中
public static class ApplicationLogging
{
public static ILoggerFactory LoggerFactory { get; set; }
public static ILogger CreateLogger<T>() =>
LoggerFactory?.CreateLogger<T>();
public static ILogger CreateLogger(string name) =>
LoggerFactory?.CreateLogger(name);
}
设置为
public void Configure(ILoggerFactory loggerFactory)
{
...
ApplicationLogging.LoggerFactory = loggerFactory;
}
但是,我注意到 ILoggerFactory
被处置
System.ObjectDisposedException: Cannot access a disposed object. Object name: 'LoggerFactory'. at Microsoft.Extensions.Logging.LoggerFactory.CreateLogger(String categoryName) at Microsoft.Extensions.Logging.Logger`1..ctor(ILoggerFactory factory) at Microsoft.Extensions.Logging.LoggerFactoryExtensions.CreateLogger[T](ILoggerFactory factory)
那么存储一个ILoggerFactory
是不是不对呢? ?从扩展方法访问它的替代方法是什么?店铺 IServiceProvider
和 GetRequiredService<ILoggerFactory>
?
最佳答案
ILoggerFactory
默认不会添加到 DI 容器中。您应该使用提供的 AddLogging()
扩展方法注册它。
public void ConfigureServices(IServiceCollection services)
{
...
services.AddLogging()
}
内部简单地做
services.TryAdd(ServiceDescriptor.Singleton<ILoggerFactory, LoggerFactory>());
无论如何,正如其他评论所说 - 尽量使用内置的 DI 容器而不是自己的静态类来解决依赖关系。
关于c# - 扩展方法中的 ILoggerFactory - 生命周期和处置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45073073/
创建 ILogger在扩展方法中,我存储了一个 ILoggerFactory在静态类中 public static class ApplicationLogging { public stat
我将我的项目升级到 .NET Core 2.2.x 并收到关于以下代码的过时警告 - 两行: public void Configure(IApplicationBuilder app,
我使用 C# 创建了一个简单的 Azure 函数,我想为其他类库实现 ILoggerFactory。这是我的代码。 MyFunction => Class1 => Class2 namespace F
我想将 Microsoft.Extensions.Logging 与 DryIoc 容器一起使用。 默认方式是将工厂注册为实例,注入(inject)并创建记录器: ILoggerFactory log
我有一个需要无参数构造函数的现有类。我想记录一个错误和其中的一些其他数据。在我的应用程序的其他任何地方,我都将 ILoggerFactory 放在我的构造函数中,DI 会处理它,因此我可以记录等等。由
private ILoggerFactory ConfigureLogging(ILoggerFactory factory) { factory.AddConsole();
我已阅读 this但它适用于 asp.net 核心。我的以下代码适用于非网络 控制台应用程序。 Visual Studio 告诉我 AddConsole(this ILoggerFactory,...
我正在尝试将 NLog 作为提供程序添加到我的 startup.cs 文件中的记录器工厂,但我似乎无法添加它。我见过的所有例子都是这样做的: loggerFactory.AddNLog(new glo
上周将我的 Windows 服务应用程序部署到生产环境失败,所以我尝试在本地以 Release模式运行该项目并得到 InvalidOperationException: Can not determi
在我新的 asp.net 5 应用程序中,我有这个错误: Could not load file or assembly 'Microsoft.Framework.Logging.ILoggerFac
我正在尝试将异常记录到 Application Insights。我通过直接调用 TelemetryClient.TrackException 成功地做到了这一点。但是,我想在我的代码中对此进行抽象,
我正在尝试写入 .netcore/c# 中的自定义事件源,但还没有找到指定 .net core 记录器对象的目标源的方法。在这种情况下,我想写入“我的事件日志”而不是应用程序日志。下面的代码成功写入应
大家 我正在尝试对我的代码进行单元测试,但是我无法让 ILoggerFactory 工作 这是我的单元测试代码(可能不正确): using NUnit.Framework; using Microso
大家 我正在尝试对我的代码进行单元测试,但是我无法让 ILoggerFactory 工作 这是我的单元测试代码(可能不正确): using NUnit.Framework; using Microso
我的 asp.net core 2.x 应用程序有典型的日志记录要求: 在生产中使用应用洞察力, 在开发环境中控制台和调试记录器 根据类别和日志级别设置一些过滤器 现在我看到至少三个不同的 API 来
MS 文档文章 "Introduction to Logging in ASP.NET Core"给出了2个构造函数注入(inject)的例子 使用ILogger private readonly I
这可能与Pass ILogger or ILoggerFactory to constructors in AspNet Core?有点关系,但是这是专门针对库设计的,而不是关于使用这些库的实际应用程
我正在尝试在 Eclipse 项目中使用 log4j.2.x 进行日志记录。我命名为 log4j2.xml 的 conf 文件直接在 java 项目下,我在类路径中有必要的 jars。测试时,我看到以
我使用 asp.net core 1.1 组合了一个简单的控制台应用程序。我设置了 Kestrel 托管并使用了一个 Configure 方法来注入(inject)IApplicationBuilde
我正在处理一个使用简单注入(inject)器作为依赖注入(inject)器的项目。另一方面,该项目使用 Microsoft.Extensions.Logging 来记录某些类中发生的事件。 我的技术问
我是一名优秀的程序员,十分优秀!