NLog JsonLayout配置疑问:如何输出正确渲染的日志消息
NLog JsonLayout 正确输出格式化日志消息的解决方法
问题根源:
- 使用
${message:raw=false}时,JsonLayout会对格式化后的消息做Json转义,导致出现不必要的转义引号; - 使用
${message:raw=true}时,${message}返回的是未替换占位符的原始模板字符串,而非最终格式化内容。
- 使用
解决步骤:
将JsonLayout中message字段的布局渲染器替换为${formatted-message:raw=true},配置示例如下:{ "name": "message", "layout": "${formatted-message:raw=true}" }原理说明:
${formatted-message}直接返回完成占位符替换的最终日志内容,而非原始模板;raw=true参数会阻止JsonLayout对该内容做额外的Json转义,确保消息内容原样输出。
执行测试代码:
var test = "Something"; logger.Info("This is what is stored in the variable: {var}", test);
日志消息将正确输出:This is what is stored in the variable: Something
内容的提问来源于stack exchange,提问作者chobo2
相关产品推荐
相关产品推荐

