Я хочу разделить свои журналы на три разные части. Искал библиотеки журналирования, и лучшая из них, которую я нашел, — Serilog.
Использовал следующий код, но ничего не работает:
new LoggerConfiguration().Enrich.WithExceptionDetails(new DestructuringOptionsBuilder()
.WithDefaultDestructurers()
.WithRootName("Message").WithRootName("Exception").WithRootName("Exception"))
.Enrich.WithProperty("App.Version", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version?.ToString() ?? "0.0.0.0")
.Enrich.WithMachineName()
.Enrich.WithEnvironmentUserName()
.WriteTo.SQLite(GetFilePath("logs.db"))
.Filter.ByIncludingOnly(Matching.FromSource("Serilog.AspNetCore.RequestLoggingMiddleware"))
.WriteTo.File(
GetFilePath("access.log"),
rollingInterval: RollingInterval.Day,
retainedFileCountLimit: 31
)
.Filter.ByIncludingOnly(LogEvent => LogEvent.Exception != null)
.WriteTo.Seq("https://mylogger.appserver.com/")
Удален второй фильтр (журналы запросов), и теперь он просто записывает журналы исключений как в Seq, так и в локальную базу данных SQLite.





Вы можете использовать «вспомогательный регистратор» для настройки разных фильтров для каждого приемника, как показано ниже:
Log.Logger = new LoggerConfiguration()
.Enrich.WithExceptionDetails(new DestructuringOptionsBuilder()
.WithDefaultDestructurers()
.WithRootName("Message").WithRootName("Exception").WithRootName("Exception"))
.Enrich.WithProperty("App.Version", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version?.ToString() ?? "0.0.0.0")
.Enrich.WithMachineName()
.Enrich.WithEnvironmentUserName()
.WriteTo.Logger(l => l
.Filter.ByExcluding(Matching.FromSource("Serilog.AspNetCore.RequestLoggingMiddleware"))
.WriteTo.SQLite(GetFilePath("logs.db")))
.WriteTo.Logger(l => l
.Filter.ByIncludingOnly(Matching.FromSource("Serilog.AspNetCore.RequestLoggingMiddleware"))
.WriteTo.File(GetFilePath("access.log"),rollingInterval: RollingInterval.Day,retainedFileCountLimit: 31))
.WriteTo.Logger(l => l
.Filter.ByIncludingOnly(LogEvent => LogEvent.Exception != null)
.WriteTo.Seq("https://mylogger.appserver.com/"))
.CreateLogger();
(Используйте Filter.ByExcluding, чтобы исключить источник)
вы отсекли хвост этому сообщению, или в нем отсутствует CreateLogger и/или назначено ti для Log.Logger? Когда вы говорите, что ничего не работает, стоит проверить такие вещи