2017-02-24 26 views
0

我對Log4Javascript和日誌記錄非常陌生,所以請耐心等待。配置AjaxAppender請求的數據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對象一個數組,我相信這是我的問題所在。

所以我的問題是:

  • 我錯過了在建立AjaxAppenderJsonLayout的東西嗎?
  • 有沒有辦法改變請求有效載荷的格式與log4javascript?
  • 如果沒有,CouchDB中有一種方法,當文檔被張貼時,我可以截取並更改請求有效載荷並繼續,因此它將刪除數組(我假設它不喜歡)?

謝謝。

回答

0

我找到了我的答案。

JsonLayout有屬性稱爲batchHeaderbatchFooter等,但這兩個是我的罪魁禍首。

無論出於何種原因,它仍包括他們即使我沒有做批處理日誌發送,所以我刪除他們兩個像這樣:

... 
var layout = new log4javascript.JsonLayout(true, false); 
layout.batchHeader = ""; 
layout.batchFooter = ""; 
... 

這個固定我的問題,我成功發佈日誌CouchDB的。

希望這可以幫助別人。