我正在考虑在我的应用程序中使用javascript日志框架。
我很喜欢log4javascript (http://log4javascript.org/)的外观,但我有一个要求,我不确定它是否满足。
我需要能够要求框架的所有消息都已被记录。
也许我可以使用一个不可见的InPageAppender (http://log4javascript.org/docs/manual.html#appenders)来记录到一个DOM元素,然后从该DOM元素中提取出消息-但这似乎相当繁重。
也许我需要写我自己的"InMemoryAppender"?
发布于 2012-04-03 07:02:47
在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);https://stackoverflow.com/questions/9984729
复制相似问题