我的公司希望将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配置中执行此操作的可能方法。
此外,我偶然发现了一个名为Serilog.Sinks.Map的NuGet程序包,它可以完成我想要的操作,但是它处于预发布状态,不适合我公司的生产代码。