【问题标题】:How do I filter my log file based on categories with .NET Core logging?如何使用 .NET Core 日志记录根据类别过滤我的日志文件?
【发布时间】:2017-07-10 14:12:00
【问题描述】:

我已经像这样配置了我的记录器工厂,

loggerFactory
    .AddConsole()
    .AddDebug()
    .AddFile("Logs/trace-{Date}.txt");

在我的构造函数中,我依赖于例如ILogger<MyServiceClass>。据我了解,框架随后将为我的服务类创建一个记录器实例,其类别名称基于类型的全名。

在我的日志文件中,我看到如下消息:

2017-07-07T09:10:46.5678506+02:00 0HL650T1MS1RU [WRN] 参与者 b943174e-8022-4e33-ef0d-08d4c4bc4879 在协商 42d9720f-32a2-46f9-9042-08d481c4b 中的套接字注册失败。 (799c4f21)

我似乎记得在某处读过该类别被散列以节省文件大小,所以我怀疑时间戳和日志级别 (0HL...1RU) 之间的一口代表该类别,但这并不是真正可搜索或发现的。

如何配置我的记录器以不混淆日志文件中的类别名称?

【问题讨论】:

    标签: logging .net-core serilog


    【解决方案1】:

    根据代码,您使用Serilog.Extensions.Logging.File(具体的记录器实现很重要)。那个有趣的字符串0HL...1RU 实际上是一个唯一的请求 ID。我猜这个记录器不支持纯文本日志的日志类别。

    解决方法 #1:使用 JSON 日志:

    loggerFactory.AddFile("filename", isJson: true);
    

    SourceContext 属性将出现在具有您的日志类别的日志输出中:

    "SourceContext":"MyNamespace.MyServiceClass"
    

    解决方法 #2:只需使用另一个 third-party file logger,如 NLog 或完全独立的 Serilog API

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      • 2010-12-17
      • 2020-11-19
      • 1970-01-01
      相关资源
      最近更新 更多