我对Log4Javascript和一般日志都很陌生,所以请容忍我。
我正在尝试将日志发布到CouchDB。我从服务器收到一个错误:
{"error":"bad_request","reason":"Document must be a JSON object"}好酷。所以它不是JSON对象,我可以修复它。
但我不知道怎么做。
我使用的代码是:
var log = log4javascript.getLogger();
var ajaxAppender = new log4javascript.AjaxAppender(url);
var layout = new log4javascript.JsonLayout(true, false);
ajaxAppender.addHeader("Content-Type", "application/json");
ajaxAppender.setLayout(layout);
log.addAppender(ajaxAppender);
// Test the logger
log.debug(JSON.stringify("Hello world!"));我搜索过的任何地方都说这是作为JSON对象发送它的方法,所以我认为这是正确的。
当我查看请求有效负载时,我意识到CouchDB服务器必须不喜欢它的格式化方式,如下所示:
[
{
"logger": "[anonymous]",
"timestamp": 1487961971605,
"level": "DEBUG",
"url": "url.to.couchdb",
"message": "\"Hello world!\""
}
]正如您所看到的,它是数组中的一个JSON对象,我相信这就是我的问题所在。
所以我的问题是:
AjaxAppender和JsonLayout的东西?谢谢。
发布于 2017-02-24 21:06:43
我找到了答案。
JsonLayout具有名为batchHeader和batchFooter等属性,但这两个属性对我来说是罪魁祸首。
不管出于什么原因,即使我没有进行批处理日志发送,它仍然包含它们,因此我将它们都删除如下:
...
var layout = new log4javascript.JsonLayout(true, false);
layout.batchHeader = "";
layout.batchFooter = "";
...这解决了我的问题,我成功地将POSTed日志记录到CouchDB。
希望这能帮到别人。
https://stackoverflow.com/questions/42446226
复制相似问题