2017-02-24 67 views
0

Log4Javascriptとロギングにはとても新しくなっています。AjaxAppenderリクエストのデータを設定するLog4Javascript

ログをCouchDBにPOSTしようとしています。サーバーからエラーが表示されます。

{"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を使用してリクエストペイロードの形式を変更する方法はありますか?
  • もしそうでなければ、ドキュメントがPOSTされたときに、リクエストペイロードを傍受して変更し続けることができるので、配列が削除されるということがCouchDBにありますか?

ありがとうございます。

答えて

0

私は私の答えを見つけました。

JsonLayoutにはbatchHeaderbatchFooterという名前のプロパティがありますが、これら2つは私の犯人です。何らかの理由で

が、それはまだ私が送信バッチログをやっていなかったにもかかわらず、それらを含めたので、私はそうのようにそれらの両方を削除:

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

これは私の問題を修正し、私は正常のCouchDBにログを掲載しました。

これは他の人に役立つことを願っています。

関連する問題