代码之家  ›  专栏  ›  技术社区  ›  DarthVader

serilog每个功能有多个实例

  •  5
  • DarthVader  · 技术社区  · 8 年前

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

    但是,我需要另一个audit实例来audit-{date}.log,并需要另一个实例来将perf info写入perf-{date}.log。

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

    2 回复  |  直到 8 年前
        1
  •  0
  •   adem caglin    8 年前

    您可以按以下方式执行此操作:

            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
  •  0
  •   Calvin    7 年前

    我假设您需要不同的接口名称来编写审计和性能数据(注入到主业务代码中)。如果是这样的话,就用一个新的Serilog实例来实现你的IAudit,IPerfData,你可以完全自定义保存日志的位置和方式。

    推荐文章