我遇到了 JSNlog 和 Nlog 的问题,其中包含来自 JSNlog 的格式化异常。我将所有错误日志都写为 JSON,但是当我从 javascript 抛出异常时,系统将 %message 属性编码为 JSON,同时导致外部 JSON 无效。
我对这个 appender 的 Nlog.config 文件的配置是:
layout='{"Enviroment":"${aspnet-application:variable=Enviroment}","CreatedOn": "${longdate:universalTime=true}", "WindowsIdentity":"${aspnet-user-identity:jsonEncode=true}","Application":"${AppName}", "Level":"${level}", ${message}}' />
我对 JSNlog 的 web.config 的配置是:
serverSideMessageFormat=""UserAgent": "%userAgent", "SessionId": "%requestId", "URL":"%url", "UserAddress": "%userHostAddress", "Message": "%message""
当我使用此配置运行时,它适用于所有正常的 fatal/error/warn/info/debug/trace 调用,但在使用以下 JSON 的任何 fatalException 调用时它会因 JSON 无效而失败:
{"Enviroment":"Dev", "CreatedOn": "2014-09-24 23:58:42.1734", "WindowsIdentity":"XXXr","Application":"LoggingTest", "Level":"Fatal", "UserAgent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36", "SessionId": "befn1iy4mlxqowppwepf104z", "URL":"/LoggingTest/jsnlog.logger", "UserAddress": "10.247.224.202", "Message": "{"stack":"TypeError: undefined is not a function\n at Log (http://zue-v-86a32393.vpc-am.aws.shell-cloud.com/LoggingTest/:58:16)\n at HTMLInputElement.onclick (http:/XXXX/LoggingTest/:66:141)","message":"undefined is not a function","name":"TypeError","logData":"JS Fatal Exception"}"}
我已经尝试删除消息周围的引号,然后它对于 fatalException 调用工作正常,但对于任何其他日志记录调用都不是有效的 JSON,因为它缺少引号。
有谁知道如何解决这个问题或格式化来自 fatalException 调用的异常?