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); 
+0

真棒,感谢蒂姆。期待下一个版本。在此期间,我做了一些家庭烘焙和非常轻量级的东西。 – dbruning 2012-04-03 02:37:02