Я пытаюсь настроить serilog на веб-сервисе для записи журналов как в Microsoft Application Insights, так и в файл. Идея состоит в том, что мы запишем все в файл журнала, но события исключений и ошибок будут go понятными для приложения. Я очень плохо знаком с использованием Application Insights, но похоже на приложение. Insights получает события, но не «Traces», которые содержат операторы журнала. Но я могу неправильно понять, как все это работает, как я уже сказал, очень новое.
Я хочу установить в коде один регистратор и отправить Serilog в оба приемника. И я хотел бы установить это с помощью ReadFrom.Configuration, а не, так сказать, в коде. Мои настройки приложений. json Раздел Serilog включен ниже.
Приведенная ниже конфигурация работает для записи в файл, но, похоже, ничего не отправляет в трассировку Application Insights.
"Serilog": {
"Using": [
"Serilog.Sinks.ApplicationInsights",
"Serilog.Sinks.File"
],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"WriteTo": [
{
"Name": "ApplicationInsights",
"Args": {
"restrictedToMinimumLevel": "Information",
"telemetryConverter": "Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights",
"instrumentationKey": "-inst-key-"
}
},
{
"Name": "File",
"Args": {
"flushToDiskInterval": "00:00:01",
"path": "Logs\\myWebService-.log",
"rollOnFileSizeLimit": true,
"fileSizeLimitBytes": 50100100,
"rollingInterval": "Day",
"retainedFileCountLimit": 5,
"buffered": false,
"outputTemplate": "{Timestamp:dd-MMM-yyyy HH:mm:ss.fff zzz} {Level:u3} tid={ThreadId} {Message:lj}{NewLine}"
}
}
]
}
public Serilog.ILogger CreateLogger(IConfiguration config)
{
// Binding the class AppSettings to the AppSettings tage in the file: appsettings.json
var appSettings = new AppSettings();
Configuration.GetSection("AppSettings").Bind(appSettings);
//CreateEventSource();
// When nswag run, Configuration will be null. return an empty logger.
if (config == null)
return Log.Logger;
return new LoggerConfiguration().ReadFrom.Configuration(config)
.Enrich.WithThreadId()
.CreateLogger();
}