log4javascript - 以编程方式获取消息的历史记录?
问题描述:
我正在研究在我的应用程序中使用JavaScript日志框架。log4javascript - 以编程方式获取消息的历史记录?
我很喜欢log4javascript(http://log4javascript.org/)的外观,但我有一个要求,我不确定它满足。
我需要能够向框架询问所有已记录的消息。
也许我可以使用不可见的InPageAppender(http://log4javascript.org/docs/manual.html#appenders)登录到DOM元素,然后从该DOM元素中删除消息 - 但看起来很重。
也许我需要写我自己的“InMemoryAppender”?
答
在log4javascript的单元测试中使用了ArrayAppender
,它将所有收到的日志消息存储在可通过其logMessages
属性访问的数组中。希望它会出现在下一个版本的主要发行版中。这里是一个独立的实现:
var ArrayAppender = function(layout) {
if (layout) {
this.setLayout(layout);
}
this.logMessages = [];
};
ArrayAppender.prototype = new log4javascript.Appender();
ArrayAppender.prototype.layout = new log4javascript.NullLayout();
ArrayAppender.prototype.append = function(loggingEvent) {
var formattedMessage = this.getLayout().format(loggingEvent);
if (this.getLayout().ignoresThrowable()) {
formattedMessage += loggingEvent.getThrowableStrRep();
}
this.logMessages.push(formattedMessage);
};
ArrayAppender.prototype.toString = function() {
return "[ArrayAppender]";
};
使用例:
var log = log4javascript.getLogger("main");
var appender = new ArrayAppender();
log.addAppender(appender);
log.debug("A message");
alert(appender.logMessages);
真棒,感谢蒂姆。期待下一个版本。在此期间,我做了一些家庭烘焙和非常轻量级的东西。 – dbruning 2012-04-03 02:37:02