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.RollingFile或Serilog.Sinks.ApplicationInsights而不是控制台来编写日志事件.
关于如何使用Serilog.Sinks.RollingFile或Serilog.Sinks.ApplicationInsights,您可以参考以下代码.
首先,从Nuget 安装Serilog.AspNetCore和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");
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.
文件夹:
| 归档时间: |
|
| 查看次数: |
4709 次 |
| 最近记录: |