I have a Azure Function App running on .NET 6, I am using Microsoft.Extension.Logging
for logging and everything is working perfectly.
Now I have a new requirement to support structured logging, so I decided to use Serilog, but even after doing all configurations, structured logs are not showing up in application insights as expected.
This is my startup.cs
configuration for Serilog:
public override void Configure(IFunctionsHostBuilder builder)
{
var telemetryConfiguration = TelemetryConfiguration.CreateDefault();
telemetryConfiguration.ConnectionString = Settings.ApplicationInsightsConnectionString;
// Create and initialize the dependency tracking module
var dependencyModule = new DependencyTrackingTelemetryModule();
dependencyModule.Initialize(telemetryConfiguration);
// Create the custom telemetry processor
var telemetryProcessorChainBuilder = telemetryConfiguration.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
var configuration = builder.Services.BuildServiceProvider().GetService<IConfiguration>();
telemetryProcessorChainBuilder.Use(next => new CustomTelemetryProcessor(next, configuration));
// Build the telemetry processor chain
telemetryProcessorChainBuilder.Build();
Log.Logger = new LoggerConfiguration()
.WriteTo.ApplicationInsights(telemetryConfiguration, TelemetryConverter.Traces)
.CreateLogger();
builder.Services.AddSingleton(telemetryConfiguration);
builder.Services.AddSingleton(typeof(IAppLogger<>), typeof(AppLogger<>));
// rest of the code...
}
And this is the log I’m logging using AppLogger
which uses Microsoft.Extension.Logging
:
_logger.LogInformation("Log message {@LogMessage}", new LogMessage { ApplicationName = ApplicationDetails.ApplicationName, MethodName = AzureFunctionNames.Function1, IngressEvent = inputMessage.Payload.EventBody });
It’s logging in Application Insight as serialised JSON of LogMessage
, instead of logging in structured log format so that I should be able to query on each entity of LogMessage
class.
What could be the reason that I am not able to see structured logs in Application Insights?