Serilog与Azure中的API应用程序

ZEN*_*NIT 8 c# azure asp.net-web-api serilog azure-api-apps

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

Log.Logger = new LoggerConfiguration()
        .Enrich.FromLogContext()
        .WriteTo.Console()
        .CreateLogger();
Run Code Online (Sandbox Code Playgroud)

我设法在调试期间完美地查看日志.
现在我在Azure中将服务部署为API应用程序.
应该使用什么配置来通过Azure Portal中的Log Stream扩展来查看生产环境中的日志?

Bra*_*ang 11

据我所知,Serilog.Sinks.Console会将日志事件写入Windows控制台.但是,如果您将应用程序发布到azure,我们将无法直接看到控制台.

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

关于如何使用Serilog.Sinks.RollingFile或Serilog.Sinks.ApplicationInsights,您可以参考以下代码.

首先,从Nuget 安装Serilog.AspNetCoreSerilog.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");
Run Code Online (Sandbox Code Playgroud)

它将自动创建txt文件以记录事件.

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

在此输入图像描述


更新:

如果要使用Serilog将日志记录到azure日志流,则首先需要在Web应用程序中启用"诊断日志".然后,您可以使用Serilog将文件记录到azure默认的"Diagnostic logs"文件夹中.例如:D:\ home\LogFiles\http\RawLogs.然后日志将显示在Log Streaming中.

使用以下代码进行测试:

        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");
Run Code Online (Sandbox Code Playgroud)

并启用诊断日志.

在此输入图像描述

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

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

在此输入图像描述

文件夹:

在此输入图像描述

  • 更新:如果您想使用 Serilog 将日志记录到 azure 日志流,您需要首先在 Web 应用程序中启用“诊断日志”。然后您可以使用 Serilog 将文件记录到 azure 默认的“诊断日志”文件夹中。例如:D:\home\LogFiles\http\RawLogs。然后日志将显示在日志流中。更多细节,你可以看到我的更新答案。 (2认同)