2

アプリで JavaScript ロギング フレームワークを使用することを検討しています。

私は log4javascript ( http://log4javascript.org/ ) の外観がとても気に入っていますが、それが満たされているかどうかわからない要件が 1 つあります。

ログに記録されたすべてのメッセージをフレームワークに要求できるようにする必要があります。

おそらく、目に見えない InPageAppender ( http://log4javascript.org/docs/manual.html#appenders ) を使用して DOM 要素にログを記録し、その DOM 要素からメッセージをかき出すことができますが、それはかなり重いようです。

おそらく、独自の「InMemoryAppender」を作成する必要がありますか?

4

1 に答える 1

3

ArrayAppenderプロパティを介してアクセス可能な配列に受信したすべてのログ メッセージを格納する、log4javascript の単体テストで使用されるがあり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 に答える