我目前在使用 NLog 将 XML 值写入数据库表时遇到问题。我正在使用 WCF 和 C#
我有一个正在写入数据库的请求 XML 对象,如果我按如下方式使用内置的“消息”对象,它会起作用:
NLog.Config
<parameter name="@message" layout="${message}" />
代码隐藏:
logger.Debug("{@value1}", new { request1 = request});
但是如果我尝试将它写入另一个字段,例如:
<parameter name="@Request" layout="${event-properties:value1}" />
它不会将对象的值写入表中,但是:
“我的服务.类型.请求”
请求类型是:
namespace MyServices.Types
{
[DataContract]
public class Request
{
[DataMember]
public string MessageHeader { get; set; }
[DataMember]
public int EventType { get; set; }
[DataMember]
public string Identification { get; set; }
[DataMember]
public DateTime VisitDate { get; set; }
}
}
这是有原因的吗? “消息”属性似乎工作正常
最佳答案
(这是针对较旧 NLog 版本的答案。有关最新版本,请参阅 Rolf 的答案)
即使使用结构化日志记录,事件属性也不会转换为结构化格式 - 它使用的是 ToString
目前只支持JSON序列化,不支持XML
<parameter name="@Request" layout="${event-properties:value1:format=@}" />
参见 ${event-properties} docs更多选项和示例
关于c# - NLog 使用 WCF C#.NET 将对象写入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51926716/