Serilog依赖注入

问题描述

我试图将.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();

在我的控制器类中,我照常做:

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.Log@R_643_4045@ion("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与Logging扩展集成在一起,有些与通用主机配合使用,有些添加了特定于ASP.NET Core的扩展。

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

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

这将为应用程序主机构建过程使用静态记录器