首页 > 解决方案 > 没有构造函数 DI 的自定义日志记录

问题描述

我如何根据在每个类中没有构造函数依赖注入而注册的提供程序来记录自定义信息/错误?(因为我在控制器内部调用了单个控制器多个存储库,并且我无法更改存储库 i,e 类构造函数)

例如,我想在不接触控制器构造器的情况下在以下上下文中记录信息

public override void OnException(ExceptionContext context)
        {
            base.OnException(context);
            var logger = Dependency.Resolve<ILogger>();
            **//var logger = getIloggerSomehow from startup regsistred loggers**

            logger.LogInformation("Custom Info");

        }

我的启动服务如下所示,它在我期望的任何地方写入 dotnet 和 Microosft 日志。我如何在所有这些地方编写自定义日志?

services.AddLogging(loggingBuilder =>
              {
                    loggingBuilder.AddConfiguration(Configuration.GetSection("Logging"));                    loggingBuilder.AddAWSProvider(Configuration.GetAWSLoggingConfigSection());
                loggingBuilder.SetMinimumLevel(LogLevel.Debug);
                loggingBuilder.AddConsole();
                loggingBuilder.AddDebug();
            });

标签: c#asp.net-corelogging.net-coredependency-injection

解决方案


context您可以从方法中解析服务OnException

using Microsoft.Extensions.DependencyInjection;
...
var service = context.HttpContext.RequestServices.GetService<ILogger<YourFilter>>();

推荐阅读