Reputation: 125
I am trying to connect Serilog logging with Application Insights, using this: Serilog Sinks
I am not sure why it doesn't seem to be logging to ApplicationInsights at all, while the file-logging portion works as intended.
This is my code from Program.cs:
public static int Main(string[] args)
{
var config = ConfigurationHelper.GetConfiguration();
var loggerConfiguration = new LoggerConfiguration()
.ReadFrom.Configuration(config);
var telemetryConfiguration = TelemetryConfiguration
.CreateDefault();
telemetryConfiguration.InstrumentationKey = config["ApplicationInsights:InstrumentationKey"];
//loggerConfiguration.WriteTo.File("log-files/libtester-web-.log",
// outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}",
// rollingInterval: RollingInterval.Day);
Log.Logger = loggerConfiguration
.WriteTo.ApplicationInsights(telemetryConfiguration, TelemetryConverter.Events)
.ReadFrom.Configuration(config)
.Enrich.WithMachineName()
.Enrich.WithProcessId()
.Enrich.FromLogContext()
.CreateLogger();
try
{
Log.Information("Starting web host");
CreateHostBuilder(args).Build().Run();
return 0;
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly");
return 1;
}
finally
{
Log.CloseAndFlush();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.UseSerilog();
The appropriate section from appsettings.json:
"Serilog": {
"Using": [
"Serilog.Sinks.ApplicationInsights"
],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Information"
}
},
"WriteTo": [
{
"Name": "ApplicationInsights",
"Args": {
"restrictedToMinimumLevel": "Information",
"telemetryConverter": "Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights"
}
},
{
"Name": "File",
"Args": {
"path": "log-files/libtester-web-.log",
"outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}",
"rollingInterval": "Day",
"shared": true
}
}
],
"Enrich": [ "FromLogContext" ],
"Properties": {
"Application": "LibTester.Web"
}
}
It logs fine to the log-files directory, but my resource in AppInsights isn't getting the same logs.
I get these two messages in Output from adding this: 'Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg));'
Application Insights Telemetry (unconfigured): {"name":"AppTraces","time":"2020-10-22T15:06:06.1140795Z","tags":{"ai.cloud.roleInstance":"MSI-970","ai.operation.id":"1b296d7eaa070941b54ef0b5019a7e18","ai.operation.parentId":"41f0aa970096b14a","ai.internal.sdkVersion":"dotnetc:2.15.0-44797"},"data":{"baseType":"MessageData","baseData":{"ver":2,"message":"Request finished in 628.7215ms 200 application/json; charset=utf-8","severityLevel":"Information","properties":{"ContentType":"application/json; charset=utf-8","ProcessId":"57840","ElapsedMilliseconds":"628.7215","SpanId":"41f0aa970096b14a","Application":"LibTester.Web","RequestPath":"/weatherforecast","StatusCode":"200","ParentId":"0000000000000000","MessageTemplate":"{HostingRequestFinishedLog:l}","MachineName":"MSI-970","EventId":"{"Id":2}","TraceId":"1b296d7eaa070941b54ef0b5019a7e18","RequestId":"80000032-0003-fe00-b63f-84710c7967bb","HostingRequestFinishedLog":"Request finished in 628.7215ms 200 application/json; charset=utf-8","SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics"}}}} Application Insights Telemetry: {"name":"AppRequests","time":"2020-10-22T15:06:05.4273838Z","iKey":"e1281822-9ed6-4db3-8bad-0de7ce3689a7","tags":{"ai.application.ver":"0.0.1.0","ai.cloud.roleInstance":"MSI-970","ai.user.id":"POM78vd9lDKUjMr10/Qhgc","ai.operation.id":"1b296d7eaa070941b54ef0b5019a7e18","ai.operation.name":"GET WeatherForecast/Get","ai.location.ip":"::1","ai.internal.sdkVersion":"aspnet5c:2.15.0+2c60e729d6512c31e5791ec93c9f7796d54fe426","ai.internal.nodeName":"MSI-970"},"data":{"baseType":"RequestData","baseData":{"ver":2,"id":"41f0aa970096b14a","name":"GET WeatherForecast/Get","duration":"00:00:00.7411718","success":true,"responseCode":"200","url":"https://localhost:44337/weatherforecast","properties":{"DeveloperMode":"true","_MS.ProcessedByMetricExtractors":"(Name:'Requests', Ver:'1.1')","AspNetCoreEnvironment":"Development"}}}}
Upvotes: 4
Views: 8011
Reputation: 29940
Please try to remove this section in appsettings.json
:
{
"Name": "ApplicationInsights",
"Args": {
"restrictedToMinimumLevel": "Information",
"telemetryConverter": "Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights"
}
},
After remove it, I can see the logs are in azure portal -> application insights.
Here is appsettings.json
in my test:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"ApplicationInsights": {
"InstrumentationKey": "xxxxxxxxx"
},
"Serilog": {
"Using": [
"Serilog.Sinks.ApplicationInsights"
],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Information"
}
},
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "log-files/libtester-web-.log",
"outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}",
"rollingInterval": "Day",
"shared": true
}
}
],
"Enrich": [ "FromLogContext" ],
"Properties": {
"Application": "LibTester.Web"
}
}
}
Upvotes: 1