繁体   English   中英

ASP.NET Core - 默认记录器中的 Serilog

[英]ASP.NET Core - Serilog in default the logger

我想在我的 ASP.NET Core 应用程序中使用 Serilog 来登录到一个文件。 我已经安装了包Serilog.AspNetCore (它依赖于Serilog.Settings.ConfigurationSerilog.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. 你的 appsettings.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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM