使用Serilog输出到具有指定文件名的多个文件吗?

时间:2019-04-18 16:44:35

标签: asp.net .net serilog

我的公司希望将Miscrosoft的Enterprise日志记录框架更改为Serilog。目前,我的任务是将日志记录框架更改为Serilog。

  1. 不使用我们的日志记录类更改任何当前调用的实现。

  2. 模仿旧的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程序包,它可以完成我想要的操作,但是它处于预发布状态,不适合我公司的生产代码。

0 个答案:

没有答案