我们将Azure Function V3与 dot net core 3.1 结合使用,并将跟踪和事件记录到Application Insights。这工作得很好。但是我们想将对象数据添加到日志有效负载中,因此我们使用Serilog。
如果我们使用ILogger
来自对象的接口namespace Microsoft.Extensions.Logging
将不会被正确序列化。
_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
}
}