如何为log4javascript使用有效负载而不是form-data

And*_*air 3 log4javascript

我受到我的webservice的限制:它需要一个json-payload!

所以,做点什么

var ajaxAppender = new log4javascript.AjaxAppender("clientLogger");
var jsonLayout = new log4javascript.JsonLayout();
ajaxAppender.setLayout(jsonLayout);
log.addAppender(ajaxAppender);
Run Code Online (Sandbox Code Playgroud)

将无法工作,因为它在forms-collection(datalayout)中创建了两个键.

如何使用内置选项获取json-payload?

And*_*air 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;
Run Code Online (Sandbox Code Playgroud)

像这样使用

var logger = log4javascript.getLogger('clientLogger');
var jsonAppender = new JsonAppender(url);
logger.addAppender(jsonAppender);
Run Code Online (Sandbox Code Playgroud)