serilog每个功能多个实例

时间:2018-07-24 16:36:19

标签: c# logging asp.net-core serilog

虽然我有一个通用的记录器,用于记录错误,异常等,这些记录使用滚动文件接收器将内容记录到my- {date} .log。

但是,我需要另一个实例来审核-audit- {date} .log,另一个实例来将性能信息写入perf- {date} .log。

如何创建具有不同配置或接收器的serilog的多个实例?

2 个答案:

答案 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,您就可以完全自定义保存日志的位置/方式。