Моя компания хочет перейти с каркаса Miscrosoft Enterprise на Serilog.В настоящее время передо мной стоит задача изменить каркас ведения журналов на Serilog, чтобы он.
Не изменял реализацию текущих вызовов с использованием нашего класса ведения журналов.
Имитирует структуру, используемую в нашем старом файле App.config, так что все настройки одинаковы.
Я изменяю все, чтобы читать из .jsonфайл, но я столкнулся с проблемой.Мне нужно убедиться, что кто-то может зайти в файл appsettings.json и добавить новый файл для входа в систему.
IE
"Listeners": {
"File 1": {
"fileName": "C:\\logs\\Warning.txt",
"rollInterval": "Day",
"rollOnFileSizeLimit": true,
"rollSize": 2000,
"filter": "Information"
},
"File 2": {
"fileName": "C:\\logs\\Info.txt",
"rollInterval": "Day",
"rollOnFileSizeLimit": true,
"rollSize": 2000,
"filter": "Error"
}
}
Это моя текущая реализация регистратора serilog.В настоящее время я указываю путь на основе уровня серьезности и сохраняю его в «пути», но его необходимо изменить, чтобы я потенциально мог указать массив путей на основе категории.
Serilog.Log.Logger = new LoggerConfiguration()
.Enrich.WithMachineName()
.Enrich.WithThreadId()
.Enrich.WithProcessId()
.MinimumLevel.Information()
.WriteTo.Debug()
.WriteTo.File(
Settings.GetSetting(path, null),
outputTemplate: Settings.GetSetting("Logging:Template", null))
.CreateLogger();
ILogger log = Serilog.Log.ForContext(Enricher.CategoryContext, Category.ToString());
Есликто-то добавляет файл к слушателям, тогда он должен иметь возможность выводить в него журнал.Это также включает вывод в базу данных.Проблема, с которой я сталкиваюсь, заключается в том, что я не вижу возможного способа сделать это в одной конфигурации Serilog.
Кроме того, я наткнулся на пакет NuGet с именем Serilog.Sinks.Map, который делает то, что я хочу, ноон находится в предварительной версии и не подходит для производственного кода моей компании.