首页 > 解决方案 > 尝试将对象的属性放入记录器 NLog 时出错

问题描述

当我尝试使用 NLog 放置应用程序日志以查看对象的属性时,它给了我错误

_logger.Info("token :{0}, Object:{1}", "token", Object.Select(y => new { y.Id, y.Name, y.Charge})); 

此显示错误“System.Linq.Enumerable+WhereSelectListIterator”。

然后我尝试将其转换为 List 为:

_logger.Info("token :{0}, Object:{1}", "token", Object.Select(y => new { y.Id, y.Name, y.Charge}).ToList()); 

然后错误显示为“System.Collections.Generic.List`1[<>f__AnonymousType1]”。

我似乎无法记录这个对象。有什么帮助吗?

标签: c#nlog

解决方案


如果您只想对对象进行字符串化,您可以@使用

_logger.Info("token :{0}, Object:{@1}", "token", Object.Select(y => new { y.Id, y.Name, y.Charge}).ToList()); 

但是我建议切换到结构化日志记录:https ://github.com/NLog/NLog/wiki/How-to-use-structured-logging

_logger.Info("token :{token}, Object:{object}", "token", Object.Select(y => new { y.Id, y.Name, y.Charge})); 

根据上述文档,它应该正确呈现匿名对象的集合。否则,您只需将@对象序列化为 JSON 表示即可。


推荐阅读