如何根据.NET Core日志记录的类别过滤我的日志文件?

时间:2017-07-07 12:29:15

标签: logging .net-core serilog

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

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-08d4c4bc4881中套接字注册失败。 (799c4f21)

我似乎记得在某个地方读取该类别是为了节省文件大小而进行哈希处理,所以我怀疑时间戳和日志级别(0HL...1RU)之间的满口表示类别,但那不是真的可以搜索或发现。

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

1 个答案:

答案 0 :(得分:2)

根据代码,您使用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