为什么 Serilog 不写入 ASP.Net 核心应用程序中的日志文件?

Why doesn't Serilog write to log file in ASP.Net core app?

我正在尝试在我的 ASP.Net 核心应用程序中使用 Serilog,但无法使其正常工作。在我的 Program.cs 中添加 .UseSerilog() 后,通常转到控制台屏幕的消息就会消失,并且不会创建任何日志文件。以下是我启用 Serilog 的方法:

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

这是我的应用程序设置:

  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Grpc": "Information",
      "Microsoft": "Information",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"

据我了解,默认情况下,日志文件似乎会写入 VS.net 项目下的文件夹“logs”(至少从示例中看起来是这样)我看着)。我想念什么?

配置记录到文件

在 ASP.NET Core 中配置 Serilog 以更改 Serilog 设置块中的 appsettings.json 文件以包含另一个接收器,一个文件,它将创建一个带有文件接收器的 Serilog 记录器来写入日志详细信息文件:

 "AllowedHosts": "*",

  "Serilog": {
    "MinimumLevel": "Information",
    "Override": {
      "Microsoft.AspNetCore": "Warning"
    },
    "WriteTo": [
      {
        "Name": "Console "
      },
      {
        "Name": "File",
        "Args": {
          "path": "Serilogs\AppLogs.log",
          "formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog"
        }
      }
    ]
  }
}

如上所示,文件接收者需要一个参数,其中我们需要指定日志文件名和文件路径。此路径可以是绝对路径或相对路径。在这里,我指定了一个相对路径,这将在应用程序文件夹中创建一个文件夹serilogs,并写入该文件夹中的文件AppLogs.log。

然后在startup.cs中添加代码,在构造函数中读取这些Serilog设置,如下图:

 public Startup(IConfiguration configuration)
        {
            Configuration = configuration;

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

然后更改program.cs中的代码,指定Host Builder在ASP.NET Core中使用Serilog而不是默认的logger:

 public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)

            .UseSerilog()
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }

然后运行项目,生成日志记录:

具体参考文档:

https://procodeguide.com/programming/aspnet-core-logging-with-serilog/