C# Azure中带有API应用程序的Serilog
我已经将Serilog集成到使用Asp.NETCore2.0开发的WebApi项目中 这是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
程序.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()
?这应该写入日志流,因为它显示了写入跟踪的内容。