У меня есть веб-приложение .NET Core 3, использующее Serilog.Если я фильтрую технические журналы из пространств имен MS, все журналы исчезают, событие настраивается одно.
Что я сделал
Я настраиваю Serilog в Main.cs следующим образом:
public static int Main(string[] args)
{
var currentEnv = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{currentEnv}.json", true)
.AddEnvironmentVariables()
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
try
{
CreateWebHostBuilder(args).Build().Run();
return 0;
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly");
return 1;
}
finally
{
Log.CloseAndFlush();
}
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseSerilog((context, configuration) =>
configuration.ReadFrom.Configuration(context.Configuration));
В appsettings.Development.Json:
"Serilog": {
"MinimumLevel": {
"Default": "Debug",
"Override": {
//"Microsoft": "Error"
}
},
"WriteTo": [
{
"Name": "Async",
"Args": {
"configure": [
{
"Name": "File",
"Args": {
"path": "C:\\temps\\LOGS\\AppRefTagHelper-log.txt",
"rollingInterval": "Day",
"retainedFileCountLimit": 7,
"buffered": true,
"outputTemplate": "{Timestamp:o} [{Level:u3}] ({Application}/{MachineName}/{ThreadId}) {Message}{NewLine}{Exception}"
}
}
]
}
}
]
}
Моя проблема
Я запускаю:
Log.LogInformation("TEST");
Это отлично работает, файл журнала заполнен, как и ожидалось, я вижу свои пользовательские журналы.
Если я раскомментирую переопределения, файл журналов останется пустым, у меня даже не будет моих пользовательских журналов, независимо от уровня.
Я использую только стабильные версии Serilog Nugets.
Что мне нужно
Наличие пользовательских журналов, даже если я не веду техническиеодин.