Serilog, кажется, игнорирует уровень журнала при развертывании
У нас включен Serilog для нашего.net6
веб-приложений и развернутых в службах приложений Azure для входа в Elastic.
Локально кажется, что уровни журналов соблюдаются, но когда мы развертываем в Azure, кажется, что они просто игнорируются и регистрируются.Information
иDebug
сообщения, а не использовать минимальный уровень журнала, который был фактически установлен.
The Program.cs
это так:
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Serilog;
using System;
using System.IO;
using System.Threading.Tasks;
namespace MyApp
{
public class Program
{
public async static Task<int> Main(string[] args)
{
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables()
.Build();
Serilog.Debugging.SelfLog.Enable(message => Console.WriteLine(message));
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
try
{
Log.Information("Starting");
await CreateHostBuilder(args).Build().RunAsync();
return 0;
}
catch (Exception ex)
{
Log.Fatal(ex, $"host terminated unexpectedly {ex}");
return 1;
}
finally
{
Log.CloseAndFlush();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.UseSerilog();
}
}
И раздел Serilog с AppSettings.json
"Serilog": {
"Using": ["Serilog.Sinks.Console", "Serilog.Sinks.Elasticsearch"],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"WriteTo": [
{
"Name": "Console",
"Args": {
"theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, Serilog.Sinks.Console",
"outputTemplate": "[{Timestamp} {Level:u3}] {Message:lj} <s:{SourceContext}>{NewLine}{Exception}"
}
},
{
"Name": "Elasticsearch",
"Args": {
"nodeUris": "https://<<<ELASTICHOST>>>",
"indexFormat": "logs-{0:yyyy.MM.dd}",
"connectionGlobalHeaders": "Authorization=ApiKey <<<KEY>>>>;",
"emitEventFailure": "WriteToSelfLog",
"autoRegisterTemplate": true,
"registerTemplateFailure": "IndexAnyway",
"autoRegisterTemplateVersion": "ESv7",
"batchPostingLimit": 50,
"batchAction": "Create",
"period": 2,
"inlineFields": true,
"deadLetterIndexName": "deadletter-{0:yyyy.MM.dd}"
}
}
],
"Enrich": ["FromLogContext"],
"Properties": {
"Application": "MyAzureAppServiceApp",
"Environment": "Live"
}
}
Настройки в конкретной службе приложений таковы:
Serilog__MinimumLevel__Default = Warning
Serilog__MinimumLevel__Override__Microsoft = Warning
Serilog__MinimumLevel__Override__System = Warning