c# - 如何将参数添加到 .Net Core 结构化日志记录而不在消息中引用它?

标签 c# logging .net-core nlog structured-logging

我可以在 .net 核心中做到这一点

_logger.LogInformation("Token validated {clientId}", "MyId");

然后记录库,如 NLog会知道有一个属性叫clientId值为 MyId在消息中,并且可以以特殊的方式呈现它。

我正在尝试在消息本身中不包含该属性的情况下做同样的事情,但无法确定它。这是我到目前为止所做的,它不会导致 NLog 中的属性:
 LogEventInfo info = new LogEventInfo
 {
    Properties = {{"clientId", "MyId"}},
 };
 _logger.Log(Microsoft.Extensions.Logging.LogLevel.Information, "Token validated", info, null, info.MessageFormatter);

这会导致消息没有属性。有没有更好的方法来做到这一点,或者我做错了什么?

最佳答案

Microsoft-Extension-Logging (MEL) ILogger-interface 的整个想法不依赖于特定的 Logging-Framework。

如果你开始创建 NLog LogEventInfo -objects,那么您不妨调用 NLog.LogManager.GetCurrentClassLogger()并将其用作记录器。

但也许这个维基页面可以给你一些想法:

https://github.com/NLog/NLog.Extensions.Logging/wiki/NLog-properties-with-Microsoft-Extension-Logging

关于c# - 如何将参数添加到 .Net Core 结构化日志记录而不在消息中引用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58588339/

相关文章:

c# - asp.net网页做重任务并汇报进度

c# - Java 的 AccessController.doPrivileged 的​​ Silverlight/C# 等效项是什么

java - 使用映射诊断上下文 (MDC) 将列值传递给 log4j 准备好的语句

logging - 如何使用 core.async 在 Clojure 中写入日志文件?

c# - 如何在 C# Winform 中将用户添加到 SQL Server 数据库

c# - 从 C# 页面弹出警告消息

python - 如何在 txt 文件 python 中获取脚本的输出

c# - JetBrains Rider - 配置应用程序设置覆盖

c# - DNX/.NET Core 程序集版本控制 : 4. 0.0 与 4.0.10

cookies - 如何在.net core中读取cookie过期时间?