我正在尝试将Serilog日志记录与Application Insights连接起来,使用的是:Serilog Sinks
我不确定为什么它看起来根本不能记录到ApplicationInsights中,而文件记录部分却能正常工作。
这是我来自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();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"
}}
它可以很好地将日志记录到日志文件目录中,但是我在AppInsights中的资源没有得到相同的日志。
我在输出中添加了以下两条消息:'Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg));‘
应用洞察遥测(未配置):{"name":"AppTraces","time":"2020-10-22T15:06:06.1140795Z","tags":{"ai.cloud.roleInstance":"MSI-970","ai.internal.sdkVersion":"dotnetc:2.15.0-44797"},“baseType”:“41f0a970096b14a”,"ai.operation.id":"1b296d7eaa070941b54ef0b5019a7e18","data":{"baseType":"MessageData","baseData":{"ver":2,“message”:“请求在628.7215ms 200application/json完成;"properties":{"ContentType":"application/json;=utf-8“,”severityLevel“:”信息“,charset"MessageTemplate":"{HostingRequestFinishedLog:l}",=ProcessId-8“,”ElapsedMilliseconds“:”57840“,"ElapsedMilliseconds":"628.7215","SpanId":"41f0aa970096b14a",”应用“:”LibTester.Web“,"RequestPath":"/weatherforecast","StatusCode":"200","ParentId":"0000000000000000",charset "MachineName":"MSI-970","EventId":"{"Id":2}","TraceId":"1b296d7eaa070941b54ef0b5019a7e18","RequestId":"80000032-0003-fe00-b63f-84710c7967bb",“HostingRequestFinishedLog”:“请求在628.7215ms 200application/json完成;charset=utf-8","SourceContext":"Microsoft.AspNetCore.Hosting.Diagnostics"}}}}应用洞察遥测:{"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”:“获取天气预报/获取”,"ai.location.ip":"::1","ai.internal.sdkVersion":"aspnet5c:2.15.0+2c60e729d6512c31e5791ec93c9f7796d54fe426",“ai.operation.name”:“MSI-970”},"data":{"baseType":"RequestData","baseData":{"ver":2,“id”:“41f0a970096b14a”,“name”:“获取天气预报/获取”,"duration":"00:00:00.7411718","success":true,"responseCode":"200","url":"https://localhost:44337/weatherforecast","properties":{"DeveloperMode":"true","_MS.ProcessedByMetricExtractors":"(Name:'Requests',版本:‘1.1’)“,”AspNetCoreEnvironment“:”开发“}
发布于 2020-10-27 16:52:41
请尝试在appsettings.json中删除此分区
{
"Name": "ApplicationInsights",
"Args": {
"restrictedToMinimumLevel": "Information",
"telemetryConverter": "Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights"
}
},删除后,我可以看到日志在azure门户->应用程序洞察中。
下面是我测试中的appsettings.json:
{
"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"
}
}
}https://stackoverflow.com/questions/64468271
复制相似问题