每个功能的 serilog 多个实例
Posted
技术标签:
【中文标题】每个功能的 serilog 多个实例【英文标题】:serilog multiple instance per functionality 【发布时间】:2019-01-01 08:56:27 【问题描述】:虽然我有一个用于错误、异常等的通用记录器,但它使用滚动文件接收器将内容记录到 my-date.log。
但是,我需要另一个审计实例来审计-date.log 和另一个实例来将性能信息写入 perf-date.log。
如何创建具有不同配置或接收器的多个 serilog 实例?
【问题讨论】:
有趣的问题,Expression-based event filtering 有帮助吗? 看看克里斯托的回答***.com/questions/51213779/… 【参考方案1】:你可以这样做:
var loggerConfiguration = new LoggerConfiguration()
.MinimumLevel.Verbose()
.Enrich.FromLogContext();
var fileBasePath = "<base log path>";
loggerConfiguration
.WriteTo.Console()
.WriteTo.RollingFile(fileBasePath + "log-info-Date.txt")
.WriteTo.Logger(fileLogger => fileLogger
.MinimumLevel.Error()
.WriteTo.RollingFile(fileBasePath + "log-error-Date.txt"))
.WriteTo.Logger(fileLogger => fileLogger
.Filter.ByIncludingOnly(x =>
x.Level == LogEventLevel.Information &&
x.Properties.ContainsKey("<Audit Key>"))
.WriteTo.RollingFile(fileBasePath + "log-audit-Date.txt"));
Log.Logger = loggerConfiguration.CreateLogger();
注意:Audit Key
是审计日志中使用的密钥
【讨论】:
我不想进行过滤。我需要一个尊重其自身配置的新实例。【参考方案2】:我假设您需要不同的接口名称来编写审计和性能数据(注入到您的主要业务代码中)。如果是这种情况,只需使用新的 Serilog 实例实现您的 IAudi、IPerfData,您可以完全自定义保存日志的位置/方式。
【讨论】:
以上是关于每个功能的 serilog 多个实例的主要内容,如果未能解决你的问题,请参考以下文章