我正在尝试使用log4javascript,并想知道是否有任何方法可以根据需要加载PopupAppender。
我正在寻找类似于浏览器内工具的功能,在那里,我的应用程序中会有一个图标,指示已经记录了一些内容,当我单击它时,PopupAppender会打开,并允许我查看日志。
我想如果出现错误,我可以编写自己的非常简单的附加程序来显示图标,但我不确定如何加载PopupAppender并显示历史消息?
正如您所建议的,您必须有某种代理追加器,它存储日志消息并根据需要创建PopUpAppender。类似这样的东西:
演示:http://jsfiddle.net/hDRpT/
代码:
function OnDemandPopUpAppender() {
this.popUpAppender = new log4javascript.PopUpAppender();
this.poppedUp = false;
this.popperUpperDisplayed = false;
this.queuedLoggingEvents = [];
}
var proto = new log4javascript.Appender();
OnDemandPopUpAppender.prototype = proto;
proto.appendQueued = function() {
for (var i = 0, loggingEvent; loggingEvent = this.queuedLoggingEvents[i++]; ) {
this.popUpAppender.append(loggingEvent);
}
this.queuedLoggingEvents.length = 0;
};
proto.popUp = function() {
this.poppedUp = true;
this.appendQueued();
};
proto.append = function(loggingEvent) {
var appender = this;
this.queuedLoggingEvents.push(loggingEvent);
if (this.poppedUp) {
this.appendQueued();
} else if (!this.popperUpperDisplayed &&
loggingEvent.level.isGreaterOrEqual(log4javascript.Level.ERROR)) {
var popperUpper = document.createElement("div");
popperUpper.style.border = "solid red 2px";
popperUpper.innerHTML = "There are error messages in the log. Click to open.";
popperUpper.onclick = function() {
appender.popUp();
}
document.body.appendChild(popperUpper);
this.popperUpperDisplayed = true;
}
};
var log = log4javascript.getLogger("main");
log.addAppender(new OnDemandPopUpAppender());
log.debug("A debug message");
log.error("A horrible error!");