NLog:记录序列化为 JSON 的对象

2023-11-27

我有一个带有 NLog 配置的 .Net 项目,它允许我生成 JSON 格式的日志文件。它可以很好地处理简单的短信。现在,我需要记录一些已序列化为 JSON 的任意对象。当我将这些 JSON 字符串记录为日志消息时,NLog 将文本放在引号中,然后转义内部 JSON 语法。这使得此类输出无法使用。到目前为止,我还没有找到一个 NLog 功能或布局设置,可以将我的 JSON 字符串简单地转储为文字,而不需要引号和转义字符。我错过了什么吗?

例子。目前我的日志条目如下所示:]

{ "dateTime": "2017-06-07 11:50:55.7324", "level": "DEBUG", "message": "\"description\": \"blah-blah\", \"Request\": { \"Request URL\":\/somepagepage\/}, \"Content\": { \"Form\": { ... } , \"Body\": \"Blah\" } ", "utcDateTime": "2017-06-05 06:10:34.1411" }

相反,我需要让它们看起来像:

{ "dateTime": "2017-06-07 11:50:55.7324", "level": "DEBUG", "message":
 { "description": "blah-blah", "Request": { "Request URL":/somepagepage/, "Content": { "Form": {...}, "Body": "Blah" }  }, "utcDateTime": "2017-06-05 06:10:34.1411" }

NLog.config 的相关部分:

 <layout xsi:type="JsonLayout">
   <attribute name="dateTime" layout="${longdate}" />
   <attribute name="level" layout="${level:upperCase=true}"/>
   <attribute name="message" layout="${message}" /> 
   <attribute name="utcDateTime" layout="${longdate:universalTime=true}" />
 </layout>

最终,我希望看到一个 JSON 嵌套在“消息”中的日志条目,而不是它的引用版本。


正如上面 @Rolf Kristensen 的评论。本质上,参数encode="false" 允许记录不带引号的 JSON:

  <attribute name="message" layout="${message}" encode="false" /> 

现在纯文本也不会被引用,但这可以通过自定义布局渲染器来处理,该渲染器可以区分纯文本和 JSON。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NLog:记录序列化为 JSON 的对象 的相关文章

随机推荐

  • 基于gradle构建更新IntelliJ中的单一依赖

    是否可以让 IntelliJ 更新单个依赖项 而不必通过 Gradle 侧选项卡中的 刷新所有 Gradle 项目 按钮刷新所有依赖项 我问的原因是 我们的项目的完全刷新需要几分钟 足够长的时间让我写这个问题 我只想更新对我正在本地更新的另
  • 是否可以获得转换后的绘图数据? (例如点图中的点坐标、密度曲线)

    我想知道是否可以在 ggplot2 图中获取转换后的数据 特别是 我有兴趣获取点图中点的坐标和大小 以便在另一个绘图库中使用它们 d3 js 我怎样才能提取这些信息 这是情节 g ggplot data frame x rnorm 100
  • 控制台应用程序 - 当前工作线上方的 WriteLine

    我看过其他一些与此非常相似的帖子 但他们给出的答案并没有正确回答问题 抱歉 如果有什么隐藏的东西我找不到 我想使用 Console WriteLine 打印当前 Console ReadLine 上方的内容 例如 我的应用程序打印 Hell
  • 将变量编号分配给复数数组

    我想将复杂数组分配为变量 我的代码就像 complex indx 3 3 integer i j do i 1 3 do j 1 3 indx i j i j write indx i j end do end do 在这种情况下我收到类似
  • 在后面的代码中设置显示属性

    如何将显示属性设置为在后面的代码中阻止
  • 升级到 Gradle 7 后 Android Gradle Javadoc 损坏

    几天前 我升级到了新的 Android Studio Arctic Fox 版本 现在也需要 Gradle 7 在升级之前 我有以下 javadoc 任务 它运行得很好 def javaDocsAllowList com mycompany
  • 根据外部值有条件地应用管道步骤

    鉴于 dplyr 工作流程 require dplyr mtcars gt tibble rownames to column var model gt filter grepl x model pattern Merc gt group
  • “谓词下推”和“投影下推”有什么区别?

    我找到了多种信息来源 例如发现的一个here 将 谓词下推 解释为 如果您可以将部分查询 下推 到数据存储的位置 从而过滤掉大部分数据 那么您可以大大减少网络流量 但是 我还在其他文档中看到了术语 投影下推 例如here 这似乎是同一件事
  • Android每5秒拍照一次

    使用相机 API 我能够成功拍摄照片并将其保存到文件夹中 这是我正在使用的代码 主要 xml
  • Amazon APi 网关无法生成转换后的请求

    我正在尝试将 Amazon API gateway 与 Lambda 函数集成 我成功地实现了这一目标 但是当我尝试使用curl 时 它失败了 设置 Lambda 方法 API 网关集成以及集成请求下的模板映射 当我从控制台运行 测试 时
  • 将鼠标悬停在子级上时如何禁用父级悬停

    我将尝试用一些简单的例子来展示我的问题 我拥有的 http jsfiddle net JGzSh 3 这是一些简单的按钮 稍后会有 onclick 事件 当我将鼠标悬停在绿色 div 父级 上时 hover可以稍微改变它的颜色 有什么问题
  • 如何重命名 tSQLt 测试类?

    我正在使用以下方法开发数据库红门 SQL 开发人员 tools SQL Test运行 tSQLt 测试的 SSMS 加载项缺少重命名测试类的方法 我有一个测试叫 BackendLayerCustomerAdministrationTests
  • 未捕获 无法从 URL 哈希获取父源

    我正在尝试为我的网络应用程序设置谷歌登录 目前 它处于开发状态并运行在http localhost 8080 auth 我使用 Google 提供的默认登录按钮进行用户登录 每当打开新的 iFrame 进行用户身份验证时 它就会无限挂起 当
  • TypeScript 扩展 String Static

    有没有办法将 isNullOrEmpty str string 添加到静态字符串对象 这样我就可以称之为 String isNullOrEmpty myobj 我找到了一种将其放在实现中的方法 但这对这样的方法没有帮助 String定义于l
  • Javascript:抑制 onbeforeunload 上的“此页面要求您确认是否要离开”弹出窗口

    当用户离开页面时 我需要在离开之前询问他是否想执行特定操作
  • Jquery - 遍历所有 xml 标签

    如何循环遍历xml中的所有标签 我有一个 php 可以生成类似于下一个的 xml
  • 动态指定选项和参数

    我想从数据库加载参数和选项 我允许用户定义自己的选项和参数 用户可以通过命令行调用远程api 它们指定端点的 URL 和参数 这是数据库中的数据的样子 name thename1 short a long ace type string r
  • iOS - UIImageView - 如何处理 UIImage 图像方向

    是否可以设置UIImageView处理图像方向 当我设置UIImageView具有方向的图像RIGHT 这是来自相机胶卷的照片 图像向右旋转 但我想以正确的方向显示它 因为它是拍摄的 我知道我可以旋转图像数据 但可以做得更优雅吗 如果我理解
  • 如何在VIM中指定Python解释器版本?

    为了使用插件 Clang complete 在 Vim 中编写 C 安装后出现此错误 Error detected while processing function
  • NLog:记录序列化为 JSON 的对象

    我有一个带有 NLog 配置的 Net 项目 它允许我生成 JSON 格式的日志文件 它可以很好地处理简单的短信 现在 我需要记录一些已序列化为 JSON 的任意对象 当我将这些 JSON 字符串记录为日志消息时 NLog 将文本放在引号中