Serilog依赖注入

Serilog dependency injection

我正在尝试将 Serilog 依赖注入到我在 .Net Core 3.1 中的 WebAPI 项目中的所有项目中。

在我的 startup.cs 中,我正在设置 serilog,但可能不正确:

我有: using Serilog;

然后在: public void ConfigureServices(IServiceCollection services),我有:

services.AddSingleton(Log.Logger);

我还有:

            var configuration = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                        .AddJsonFile("appsettings.json")
                        .AddJsonFile($"appsettings.Development.json", optional: true, reloadOnChange: true)
                        .Build();

            Log.Logger = new LoggerConfiguration()
                .ReadFrom.Configuration(configuration)
                .CreateLogger();

这个,在我的控制器中 class,我做通常的事情:

using Microsoft.Extensions.Logging;

private readonly ILogger _log;

public AuthorisationController(IConfiguration config, ISecurityService securityService, ILogger<AuthorisationController> log)
        {
            Configuration = config;
            _securityService = securityService;
            _log = log;
        }

Config 和 SecurityService 正常。

但是在我的第一种方法中,我尝试记录:

_log.LogInformation("Login attempt");

但我的日志中没有任何内容。

谁能找出错误?

这不重要,但我的应用程序设置是这样的:

    "MinimumLevel": "Debug",
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "outputTemplate": "===> {Timestamp:HH:mm:ss.fff zzz} [{Level}] {Message}{NewLine}{Exception}"
        }
      },
      {
        "Name": "Loggly",
        "Args": {
          "customerToken": "MySuperSecretKey"
        }
      }
    ]
  }```

您还没有发布任何日志记录配置代码,所以我认为它丢失了。有几个将 Serilog 与日志扩展集成的包,一些与通用主机一起工作,一些添加特定于 ASP.NET Core 的扩展。

一种选择是使用 Serilog.AspNetCore。创建记录器后,您可以将其与主机构建器本身一起使用:

public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseSerilog() // <-- Add this line
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });

这将为应用程序主机构建过程

使用静态记录器