【发布时间】:2021-04-18 05:23:58
【问题描述】:
我们将 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
}
}
【问题讨论】:
标签: azure .net-core azure-application-insights serilog ilogger