虽然我有一个通用的记录器,用于记录错误,异常等,这些记录使用滚动文件接收器将内容记录到my- {date} .log。
但是,我需要另一个实例来审核-audit- {date} .log,另一个实例来将性能信息写入perf- {date} .log。
如何创建具有不同配置或接收器的serilog的多个实例?
答案 0 :(得分:0)
您可以按照以下步骤进行操作:
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
是审计日志中使用的密钥
答案 1 :(得分:0)
我假设您将需要不同的接口名称来编写审计和性能数据(注入到您的主要业务代码中)。如果是这种情况,只需使用新的Serilog实例实施IAudit,IPerfData,您就可以完全自定义保存日志的位置/方式。