How can I use a payload instead of form-data for log4javascript
log4javascript
Solution
I've created a 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;
used like so
var logger = log4javascript.getLogger('clientLogger');
var jsonAppender = new JsonAppender(url);
logger.addAppender(jsonAppender);
Problem
I am bound to the restrictions of my webservice: It expects a json-payload! So, doing something like ``` var ajaxAppender = new log4javascript.AjaxAppender("clientLogger"); var jsonLayout = new log4javascript.JsonLayout(); ajaxAppender.setLayout(jsonLayout); log.addAppender(ajaxAppender); ``` won't work, as it creates two keys in the forms-collection (`data` and `layout`). How can I, with built-in options, get a json-payload?