使用 Serilog 到 Application Insights 的 Azure 函数日志记录
Azure Function Logging with Serilog to Application Insights
我们将 Azure Function V3 与 dot net core 3.1 一起使用,并将跟踪和事件记录到 Application Insights。
这工作得很好。但是我们想将对象数据添加到日志负载中,因此我们使用 Serilog.
如果我们使用 namespace Microsoft.Extensions.Logging
中的 ILogger
接口,对象将无法正确序列化。
_logger.LogInformation("Test {@model}", testmodel);
如果我们使用 Serilog 接口,它会工作并且数据将在 Application Insights 中序列化:
logger.Information("Test Serilog {@model}", testmodel);
Startup.cs
看起来像这样:
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
var logger = new LoggerConfiguration()
.WriteTo.ApplicationInsights(TelemetryConfiguration.CreateDefault(), TelemetryConverter.Traces, Serilog.Events.LogEventLevel.Information)
.Destructure.ToMaximumCollectionCount(10)
.Destructure.ToMaximumDepth(4)
.CreateLogger();
builder.Services.AddLogging(c => c.AddSerilog(logger));
// Add other services
}
}
您准备好使用 Serilog 了吗?否则,更简单(且有正式记录)的方法可能是在您的函数中使用 AppInsights TelemetryClient。通过这种方式,您可以跟踪各种事件和遥测到 AppInsights:
我建议看一下 Arcus 可观察性库。它允许您使用 ILogger 接口将日志、自定义指标等写入 Application Insights(使用 Serilog)。
https://observability.arcus-azure.net/
https://observability.arcus-azure.net/guidance/use-with-dotnet-and-functions.html
我们将 Azure Function V3 与 dot net core 3.1 一起使用,并将跟踪和事件记录到 Application Insights。 这工作得很好。但是我们想将对象数据添加到日志负载中,因此我们使用 Serilog.
如果我们使用 namespace Microsoft.Extensions.Logging
中的 ILogger
接口,对象将无法正确序列化。
_logger.LogInformation("Test {@model}", testmodel);
如果我们使用 Serilog 接口,它会工作并且数据将在 Application Insights 中序列化:
logger.Information("Test Serilog {@model}", testmodel);
Startup.cs
看起来像这样:
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
var logger = new LoggerConfiguration()
.WriteTo.ApplicationInsights(TelemetryConfiguration.CreateDefault(), TelemetryConverter.Traces, Serilog.Events.LogEventLevel.Information)
.Destructure.ToMaximumCollectionCount(10)
.Destructure.ToMaximumDepth(4)
.CreateLogger();
builder.Services.AddLogging(c => c.AddSerilog(logger));
// Add other services
}
}
您准备好使用 Serilog 了吗?否则,更简单(且有正式记录)的方法可能是在您的函数中使用 AppInsights TelemetryClient。通过这种方式,您可以跟踪各种事件和遥测到 AppInsights:
我建议看一下 Arcus 可观察性库。它允许您使用 ILogger 接口将日志、自定义指标等写入 Application Insights(使用 Serilog)。 https://observability.arcus-azure.net/
https://observability.arcus-azure.net/guidance/use-with-dotnet-and-functions.html