你好,我的WPF项目一直都是用的Nlog
,Linux下有AspNetCore上的项目,我决定尝试用Serilog替换标准的logger(因为看了不同项目的代码AspNetCore
,on GitHub
,几乎每个人都用Serilog
)。
在研究了文档和示例之后,我创建了一个测试项目,在那里我实现了记录器实例被创建并DI Autofac
通过 Autofac 扩展集成到容器中。那些。现在我可以解决ILog
我需要的地方并获取记录器实例serilog
。
我对如何设置记录器有要求:
- MinimumLevel = Info,写入 Main.log(主要工作日志)
- Level = Debug,写在debug.json中(调试日志写在json中(因为可以保存对象的状态)只有Debug级别的调试信息)
报告专用日志,写在report.csv(报告用Excel)
记录器是这样设置的:
Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .MinimumLevel.Override("Microsoft", LogEventLevel.Information) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.File("log-.txt", rollingInterval: RollingInterval.Day) .CreateLogger();
一个 MinimumLevel 对应于多个 WriteTo 源和所有!
那些。一份记录器只能解决 3 个任务中的一个?以及如何设置Level,而不是MinimumLevel?
那些。对于我的每项任务,我LoggerConfiguration
通过构建器创建自己的 ILogger 实例并将其注入必要的服务中?
对于第 3 号任务,我认为为需要某种统计信息的每个服务创建一个单独的记录器实例是合乎逻辑的,但我想将第 1 号和第 2 号任务结合起来,轻松转移这个实例通过 Autofac 记录整个系统。
使用 Nlog,我可以在一个记录器实例中解决所有任务。
子记录器用于写入多个文件,请参阅使用子记录器的 Serilog 2.0 冒险。在这种情况下,可以过滤消息
Filter
另请参阅Serilog :记录到不同的文件