配置 AjaxAppender Request Log4Javascript 的数据
Configuring the data of the AjaxAppender Request Log4Javascript
我对 Log4Javascript 和一般的日志记录还很陌生,所以请多多包涵。
我正在尝试将日志 POST 到 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
时是否遗漏了什么?
- 有没有办法用 log4javascript 更改请求负载的格式?
- 如果没有,CouchDB 中是否有一种方法可以在 POSTed 文档时拦截并更改请求有效负载并继续,因此它删除了数组(我假设它确实如此不喜欢)?
谢谢。
我找到了答案。
JsonLayout
具有名为 batchHeader
和 batchFooter
的属性,但这两个是我的罪魁祸首。
无论出于何种原因,即使我没有进行批量日志发送,它仍然包含它们,所以我将它们都删除了:
...
var layout = new log4javascript.JsonLayout(true, false);
layout.batchHeader = "";
layout.batchFooter = "";
...
这解决了我的问题,我成功地将日志发布到 CouchDB。
希望这对其他人有帮助。
我对 Log4Javascript 和一般的日志记录还很陌生,所以请多多包涵。
我正在尝试将日志 POST 到 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
时是否遗漏了什么? - 有没有办法用 log4javascript 更改请求负载的格式?
- 如果没有,CouchDB 中是否有一种方法可以在 POSTed 文档时拦截并更改请求有效负载并继续,因此它删除了数组(我假设它确实如此不喜欢)?
谢谢。
我找到了答案。
JsonLayout
具有名为 batchHeader
和 batchFooter
的属性,但这两个是我的罪魁祸首。
无论出于何种原因,即使我没有进行批量日志发送,它仍然包含它们,所以我将它们都删除了:
...
var layout = new log4javascript.JsonLayout(true, false);
layout.batchHeader = "";
layout.batchFooter = "";
...
这解决了我的问题,我成功地将日志发布到 CouchDB。
希望这对其他人有帮助。