gpt4 book ai didi

c# - SourceContext 的 Serilog 记录器配置

转载 作者:太空宇宙 更新时间:2023-11-03 12:21:05 30 4
gpt4 key购买 nike

我正在尝试在一个小示例项目中实现 serilog。到目前为止,我做了以下事情:

  • 创建新的 ASP.NET Core Web 应用程序 (MVC)
  • 安装包 Serilog.AspNetCore
  • 安装包 Serilog.Sinks.File
  • 安装包 Serilog.Formatting.Compact
  • 关注this博文
  • 尝试关注this博文

我的问题:

是否可以根据类别名称(在我的例子中为“MyLogger”)配置两个不同的记录器?我希望此记录器使用与我的默认记录器不同的文件。在我的快乐世界幻想中,它看起来像:

        Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.Enrich.FromLogContext()
.WriteTo.File(new CompactJsonFormatter(), @"C:\temp\standardLog.txt")
.WriteTo.File(new CompactJsonFormatter(), @"C:\temp\specialLog.txt").Filter.ByIncludingOnly(x => x.SourceContext("MySpecialLogger")
.CreateLogger();

如果我创建一个新的记录器 var logger = _loggerFactory.CreateLogger("MySpecialLogger"); 日志将保存在我的 specialLog.txt 文件中。

有什么想法吗?

最佳答案

为此你需要 Serilog.Sinks.Map

dotnet add <PROJECT> package Serilog.Sinks.Map -v 1.0.0-dev-00012

然后:

    Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.Enrich.FromLogContext()
.WriteTo.Map("SourceContext", null, (sc, wt) =>
wt.File(new CompactJsonFormatter(), sc == "MySpecialLogger" ?
@"C:\temp\specialLog.txt" :
@"C:\temp\standardLog.txt"))
.CreateLogger();

关于c# - SourceContext 的 Serilog 记录器配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47185485/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com