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。
文件夹:
我已经将 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。
文件夹: