自定义日志记录,无需Consumructor DI

时间:2020-08-19 14:23:00

标签: c# asp.net-core logging .net-core dependency-injection

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

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

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();
            });

1 个答案:

答案 0 :(得分:0)

您可以通过context方法中的OnException来解析服务:

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