В моем проекте .NetCore (2.2) WebAPI есть конечная точка проверки работоспособности, для которой я не хочу создавать и записывать какие-либо журналы. Я пишу логи в WindowsEventLog. Для этого я использую отдельный файл конфигурации только для целей ведения журнала, который я загружаю при запуске.
Это конечная точка, которая находится в контроллере для проверки работоспособности:
[Route("healthcheck")]
[AllowAnonymous]
public IActionResult Get()
{
return Ok("");
}
Вот так я загружаю файл конфигурации (SeriLogSettings. json), который я создал для хранения своей конфигурации Serilog:
public Startup(IConfiguration configuration, IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddJsonFile("SeriLogSettings.json", optional: false)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
И вот так выглядит мой SerilogSettings. json например:
{
"Serilog": {
"Using": [ "Serilog.Settings.Configuration", "Serilog.Sinks.EventLog" ],
"Filter": [
{
"Name": "ByExcluding",
"Args": {
"expression": "EndsWith(RequestPath, '%/healthcheck')"
}
}
],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"Enrich": [ "FromLogContext" ],
"WriteTo": [
{
"Name": "EventLog",
"Args": {
"source": "WebAPI",
"logName": "Application",
"managedEventSource": true
}
}
],
"Properties": {
"Application": "ApplicationAPI"
}
}
}
Несмотря на использование выражения ByExclude для исключения журналов для конечной точки / healthcheck, я получаю журналы в WindowsEventLog. Я не могу понять, почему это происходит, и не уверен, что я делаю не так?