3

私は自分の Web サービスの制限に縛られています: json-payload が必要です!

だから、次のようなことをする

var ajaxAppender = new log4javascript.AjaxAppender("clientLogger");
var jsonLayout = new log4javascript.JsonLayout();
ajaxAppender.setLayout(jsonLayout);
log.addAppender(ajaxAppender);

dataフォーム コレクション (および)に 2 つのキーが作成されるため、機能しませんlayout

組み込みオプションを使用して、json-payload を取得するにはどうすればよいですか?

4

2 に答える 2

5

JsonAppenderを作成しました

function JsonAppender(url) {
    var isSupported = true;
    var successCallback = function(data, textStatus, jqXHR) { return; };
    if (!url) {
        isSupported = false;
    }
    this.setSuccessCallback = function(successCallbackParam) {
        successCallback = successCallbackParam;
    };
    this.append = function (loggingEvent) {
        if (!isSupported) {
            return;
        }
        $.post(url, {
            'logger': loggingEvent.logger.name,
            'timestamp': loggingEvent.timeStampInMilliseconds,
            'level': loggingEvent.level.name,
            'url': window.location.href,
            'message': loggingEvent.getCombinedMessages(),
            'exception': loggingEvent.getThrowableStrRep()
        }, successCallback, 'json');
    };
}

JsonAppender.prototype = new log4javascript.Appender();
JsonAppender.prototype.toString = function() {
    return 'JsonAppender';
};
log4javascript.JsonAppender = JsonAppender;

そうやって使った

var logger = log4javascript.getLogger('clientLogger');
var jsonAppender = new JsonAppender(url);
logger.addAppender(jsonAppender);
于 2012-08-21T04:37:45.217 に答える
0

log4javascript の変更ログによると、バージョン 1.4.5 では、Log4Javascript によって送信された詳細で十分であれば、カスタム アペンダーを記述する必要がなくなりました。

1.4.5 (2013 年 2 月 20 日) - content-type が "application/x-www-form-urlencoded" でない場合、URL エンコードされたフォーム データではなく生データを送信するように AjaxAppender を変更しました https://github.com/DECK36 /log4javascript/blob/master/changelog.txt

「Content-Type」ヘッダーを AjaxAppender に追加し、「application/json」に設定するだけで十分です

ajaxAppender.addHeader("Content-Type", "application/json;charset=utf-8");

fiddler を使用した簡単なテストでは、log4javasciptがオブジェクトのコレクションを送信することが示されています。ペイロードのサンプルを次に示します。

[{
    "logger": "myLogger",
    "timestamp": 1441881152618,
    "level": "DEBUG",
    "url": "http://localhost:5117/Test.Html",
    "message": "Testing message"
}]
于 2015-09-10T10:42:46.447 に答える