c# - NLog 使用 WCF C#.NET 将对象写入数据库

标签 c# nlog

我目前在使用 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/

相关文章:

具有代理凭据的 C# HttpWebRequest 未将凭据传递给代理服务器

c# - Mediatr 行为管道中的验证

c# - TransformToAncestor 给我错误的转换

c# - 如何在同一解决方案中使用来自多个项目的 NLog

c# - 有什么方法可以在 NLog 邮件目标中使用 system.net/mailSettings/smtp 中的 'from' 地址?

c# - 如何使用 NLog 登录到多个目标?

c# - 在最小起订量中使用 Match.Create

c# - 通过 C# (Microsoft.AnalysisServices) 进行的 SSAS 处理比 SSMS 慢得多

c# - 自定义 NLog Appender

.net - 使用 ILMerge 后无法读取自定义配置部分