C# Azure中带有API应用程序的Serilog

C# Azure中带有API应用程序的Serilog,c#,azure,asp.net-web-api,serilog,azure-api-apps,C#,Azure,Asp.net Web Api,Serilog,Azure Api Apps,我已经将Serilog集成到使用Asp.NETCore2.0开发的WebApi项目中 这是程序.cs中的配置代码: Log.Logger = new LoggerConfiguration() .Enrich.FromLogContext() .WriteTo.Console() .CreateLogger(); 在调试过程中,我能够完美地查看日志。 现在我将该服务作为API应用程序部署在Azure中。 应该应用什么配置来通过Azure Port

我已经将Serilog集成到使用Asp.NETCore2.0开发的WebApi项目中 这是
程序.cs中的配置代码:

Log.Logger = new LoggerConfiguration()
        .Enrich.FromLogContext()
        .WriteTo.Console()
        .CreateLogger();
在调试过程中,我能够完美地查看日志。
现在我将该服务作为API应用程序部署在Azure中。

应该应用什么配置来通过Azure Portal中的日志流扩展查看生产环境中的日志?

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

<>我建议您可以考虑使用或代替控制台来编写日志事件。

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

首先,从Nuget安装和包

然后您可以使用以下代码记录信息

    //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 app中启用“诊断日志”。然后,您可以使用Serilog将文件记录到azure默认的“诊断日志”文件夹中。e、 g: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");
并启用诊断日志

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

您可以发现日志已经登录到日志蒸汽中

文件夹:


当然,您的解决方案会奏效。但是(对我来说)还不清楚如何在Azure中使用Serilog的日志流功能据我所知,如果你想在Azure中使用日志流功能,你只能在web app中启用“诊断日志”。更新:如果你想使用Serilog将日志记录到Azure日志流,您需要首先在web app中启用“诊断日志”。然后,您可以使用Serilog将文件记录到azure默认的“诊断日志”文件夹中。e、 g:D:\home\LogFiles\http\RawLogs。然后日志将显示在日志流中。更多细节,你可以看到我的更新答案。我有类似的要求。我想知道,当由于网络问题导致与云的连接失败时,我们如何管理日志?它是否会登录到本地本地本地服务器,并在连接恢复后发送?第二个问题是,审计日志是否也可以使用serilog发送到云?是否必须为审核日志创建数据库?是否尝试使用
.WriteTo.Trace()
?这应该写入日志流,因为它显示了写入跟踪的内容。