【问题标题】:serilog multiple instance per functionality每个功能的 serilog 多个实例
【发布时间】:2019-01-01 08:56:27
【问题描述】:

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

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

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

【问题讨论】:

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


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

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多