2

我正在研究在我的应用程序中使用 javascript 日志记录框架。

我非常喜欢 log4javascript ( http://log4javascript.org/ ) 的外观,但我有一个要求,但我不确定它是否满足。

我需要能够向框架询问已记录的所有消息。

也许我可以使用不可见的 InPageAppender ( http://log4javascript.org/docs/manual.html#appenders ) 登录到 DOM 元素,然后从该 DOM 元素中刮出消息 - 但这似乎很重。

也许我需要编写自己的“InMemoryAppender”?

4

1 回答 1

3

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);
于 2012-04-02T23:02:47.250 回答