ASP. NET Core - Serilog по умолчанию регистратор - PullRequest
0 голосов
/ 23 января 2020

Я хочу использовать Serilog в своем приложении ASP. NET Core для входа в файл. Я установил пакет Serilog.AspNetCore (он имеет зависимости от Serilog.Settings.Configuration и Serilog.Sinks.File, поэтому я думаю, что мне не нужен какой-либо другой пакет).

Моя цель - добиться входа в мои контроллеры, такие как это:

...
private ILogger _log;
public MyController(ILogger<MyController> logger)
{
   _log = logger;
}
...

public ActionResult<MyResponse> Foo([FromRoute] Guid fooGuid)
{
   _log.LogError("error test");
}

В моем appsettings.json у меня есть эта конфигурация:

"Serilog": {
    "Using": [],
    "MinimumLevel": "Information",
    "WriteTo": [
      { "Name": "Console" },
      {
        "Name": "File",
        "Args": {
          "patch": "D:\\Log\\log.log"
        }
      }
    ],
    "Application": "Centralized logging application"
  },
  "AllowedHosts": "*"

и мой Program.cs выглядит так:

  public static void Main(string[] args)
    {
      CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
          .ConfigureLogging((context, logging) =>
          {
            logging.ClearProviders();
            logging.AddSerilog().AddConfiguration(context.Configuration);
          })
          .ConfigureWebHostDefaults(webBuilder =>
          {
            webBuilder.UseStartup<Startup>();
          });

Я думаю проблема в файле Program.cs. Какой самый простой способ, как добиться такого рода записи в файл? Благодаря.

1 Ответ

1 голос
/ 23 января 2020
  1. у вас есть опечатка в настройках приложения. json. Он должен указывать "path": "D:\\Log\\log.log"
  2. ваш CreateHostBuilder метод, должен включать:

    Host.CreateDefaultBuilder(args)
    .UseSerilog()
    
  3. ваш Main метод должен включать

    // reading from appsettings.json the logging settings
    var configuration = new ConfigurationBuilder()
        .AddJsonFile("appsettings.json")
        .Build();
    Log.Logger = new LoggerConfiguration()
        .ReadFrom.Configuration(configuration)
        .CreateLogger();
    
...