Azure 中带有 API 应用程序的 Serilog

Serilog With API App in Azure

我已经将 Serilog 集成到使用 Asp.Net Core 2.0 开发的 WebApi 项目中 这是Program.cs中的配置代码:

Log.Logger = new LoggerConfiguration()
        .Enrich.FromLogContext()
        .WriteTo.Console()
        .CreateLogger();

我在调试过程中完美地看到了日志。
现在我在 Azure 中将该服务部署为 API app.
通过 Azure Portal 中的日志流扩展查看生产环境中的日志应该应用什么配置?

据我所知,Serilog.Sinks.Console 会将日志事件写入 Windows 控制台。但是如果你把应用发布到azure,我们是不会直接看到console的。

我建议您可以考虑使用 Serilog.Sinks.RollingFile or Serilog.Sinks.ApplicationInsights 而不是控制台来写入日志事件。

关于Serilog.Sinks.RollingFile或Serilog.Sinks.ApplicationInsights的使用方法,可参考以下代码

首先,从 Nuget 安装 Serilog.AspNetCore and Serilog.Sinks.RollingFile 包。

然后你可以使用下面的代码来记录信息。

    //if you want to use ApplicationInsights just change the write to's method as Serilog.Sinks.ApplicationInsights links shows
    Log.Logger = new LoggerConfiguration()
       .MinimumLevel.Debug()
       .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
       .Enrich.FromLogContext()
       .WriteTo.RollingFile("log-{Date}.txt")
       .CreateLogger();

    Log.Information("This will be written to the rolling file set");

它将自动创建 txt 文件来记录事件。

结果是这样的,你可以在应用程序的wwwrot路径中找到它:


更新:

如果您想使用Serilog 将日志记录到Azure 日志流,您需要首先在Web 应用程序中启用'Diagnostic logs'。然后您可以使用 Serilog 将文件记录到天蓝色的默认 'Diagnostic logs' 文件夹中。例如:D:\home\LogFiles\http\RawLogs。然后日志将显示在日志流中。

使用以下代码进行测试:

        Log.Logger = new LoggerConfiguration()
          .MinimumLevel.Debug()
          .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
          .Enrich.FromLogContext()
          .WriteTo.File(@"D:\home\LogFiles\http\RawLogs\log.txt")
          .CreateLogger();

        Log.Information("This will be written to the rolling file set");

并启用诊断日志。

然后打开日志流并找到应用程序日志。

您可以发现日志已经登录到log-steam。

文件夹: