首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >配置AjaxAppender请求Log4Javascript的数据

配置AjaxAppender请求Log4Javascript的数据
EN

Stack Overflow用户
提问于 2017-02-24 18:53:09
回答 1查看 460关注 0票数 0

我对Log4Javascript和一般日志都很陌生,所以请容忍我。

我正在尝试将日志发布到CouchDB。我从服务器收到一个错误:

代码语言:javascript
复制
{"error":"bad_request","reason":"Document must be a JSON object"}

好酷。所以它不是JSON对象,我可以修复它。

但我不知道怎么做。

我使用的代码是:

代码语言:javascript
复制
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服务器必须不喜欢它的格式化方式,如下所示:

代码语言:javascript
复制
[
{
    "logger": "[anonymous]",
    "timestamp": 1487961971605,
    "level": "DEBUG",
    "url": "url.to.couchdb",
    "message": "\"Hello world!\""
}
]

正如您所看到的,它是数组中的一个JSON对象,我相信这就是我的问题所在。

所以我的问题是:

  • 我是不是错过了设置AjaxAppenderJsonLayout的东西?
  • 是否有办法用log4javascript更改请求有效负载的格式?
  • 如果不是,在CouchDB中是否有一种方法,当文档是POSTed时,我可以拦截并更改请求有效载荷并继续运行,这样它就删除了数组(假设它不喜欢)?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-24 21:06:43

我找到了答案。

JsonLayout具有名为batchHeaderbatchFooter等属性,但这两个属性对我来说是罪魁祸首。

不管出于什么原因,即使我没有进行批处理日志发送,它仍然包含它们,因此我将它们都删除如下:

代码语言:javascript
复制
...
var layout = new log4javascript.JsonLayout(true, false);
layout.batchHeader = "";
layout.batchFooter = "";
...

这解决了我的问题,我成功地将POSTed日志记录到CouchDB。

希望这能帮到别人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42446226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档