首页 新闻 会员 周边

.NET 中使用 Logging 时如何禁止日志消息中双引号被转义

0
悬赏园豆:30 [已解决问题] 解决于 2023-01-13 12:17

比如下面的 LogError 日志代码,requestBody 中的所有双引号都被转义为 \",影响了日志消息的可读性

var requestBody = response.RequestMessage?.Content != null ?
    "\n" + await response.RequestMessage.Content.ReadAsStringAsync(cancellationToken) :
    string.Empty;

_logger.LogError(
    "Failed to request {requestUri}. Status code is {statusCode}. {requestBody}",
    response.RequestMessage?.RequestUri,
    (int)response.StatusCode,
    requestBody);

日志消息输出

"{\"url\":\"https://www.cnblogs.com/dudu/\",\"presetName\":\"snapshot\",\"args\":[[\"snapshots/0/1\",\"\",\"\"]]}"
问题补充:

日志是通过 serilog 输出到文件

dudu的主页 dudu | 高人七级 | 园豆:31007
提问于:2023-01-13 10:53
< >
分享
最佳答案
0

原来是 serilog 的配置问题,将 outputTemplate 中的 {Message} 改为 {Message:l} 就可以了

{
  "Serilog": {
    "MinimumLevel": {
      "Default": "Warning",
      "Override": {
        "Cnblogs": "Information"
	  }
    },
    "WriteTo":[
      {
        "Name": "File",
        "Args": {
          "path": "logs/log-.log",
          "rollingInterval": "Day",
          "retainedFileCountLimit": "3",
          "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level}] {Message:l}{NewLine}{RequestPath}{NewLine}{SourceContext}{NewLine}{Exception}"
        }
      }
    ]
  }
}
dudu | 高人七级 |园豆:31007 | 2023-01-13 12:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册