Collecting debug logs, but only sending them to server on error with log4javascript

204 Views Asked by At

I am using log4javascript and an AjaxAppender set to ERROR level.

If I set it to debug I will flood my server with useless data, but when an error occurred I would then like to see the debug messages from the session.

Is there a way to store debug level, but send it to server only when an error occurred?

Thank you

1

There are 1 best solutions below

0
On BEST ANSWER

I suggest creating a simple wrapper appender for your AjaxAppender that stores log events in an array and appends to the wrapped array, such as the following (untested):

function WrappedAppender(appender) {
    this.appender = appender;
    this.loggingEvents = [];
}

WrappedAppender.prototype = new log4javascript.Appender();

WrappedAppender.prototype.append = function(loggingEvent) {
    this.loggingEvents.push(loggingEvent);
    this.appender.append(loggingEvent);
};

var ajaxAppender = new log4javascript.AjaxAppender("some_server_page");
ajaxAppender.setThreshold(log4javascript.Level.ERROR);
var wrappedAppender = new WrappedAppender(ajaxAppender);

var log = log4javascript.getLogger("main");
log.addAppender(wrappedAppender);

You can then examine wrappedAppender.loggingEvents at any time to get hold of all logging events.