【问题标题】:Can you load the PopupAppender on demand?你可以按需加载 PopupAppender 吗?
【发布时间】:2013-09-07 15:07:32
【问题描述】:

我正在尝试使用 log4javascript,并且想知道是否有任何方法可以按需加载 PopupAppender。

我正在寻找类似于浏览器内工具的功能,在我的应用程序中会有一个图标,指示已记录某些内容,当我单击它时,PopupAppender 会打开并允许我查看日志。

我想我可以编写自己的非常简单的附加程序来在出现错误时显示图标,但我不确定如何加载 PopupAppender 并显示历史消息?

【问题讨论】:

    标签: log4javascript


    【解决方案1】:

    正如您所建议的,您必须拥有某种代理附加程序,它存储日志消息并按需创建 PopUpAppender。像这样的:

    演示:http://jsfiddle.net/hDRpT/

    代码:

    function OnDemandPopUpAppender() {
        this.popUpAppender = new log4javascript.PopUpAppender();
        this.poppedUp = false;
        this.popperUpperDisplayed = false;
        this.queuedLoggingEvents = [];
    }
    
    var proto = new log4javascript.Appender();
    OnDemandPopUpAppender.prototype = proto;
    
    proto.appendQueued = function() {
        for (var i = 0, loggingEvent; loggingEvent = this.queuedLoggingEvents[i++]; ) {
            this.popUpAppender.append(loggingEvent);
        }
        this.queuedLoggingEvents.length = 0;
    };
    
    proto.popUp = function() {
        this.poppedUp = true;
        this.appendQueued();
    };
    
    proto.append = function(loggingEvent) {
        var appender = this;
        this.queuedLoggingEvents.push(loggingEvent);
    
        if (this.poppedUp) {
            this.appendQueued();
        } else if (!this.popperUpperDisplayed &&
                loggingEvent.level.isGreaterOrEqual(log4javascript.Level.ERROR)) {
            var popperUpper = document.createElement("div");
            popperUpper.style.border = "solid red 2px";
            popperUpper.innerHTML = "There are error messages in the log. Click to open.";
            popperUpper.onclick = function() {
                appender.popUp();
            }
            document.body.appendChild(popperUpper);
            this.popperUpperDisplayed = true;
        }
    };
    
    var log = log4javascript.getLogger("main");
    log.addAppender(new OnDemandPopUpAppender());
    
    log.debug("A debug message");
    log.error("A horrible error!");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-17
      • 2014-01-02
      • 2012-01-08
      • 2012-10-26
      • 2012-10-09
      • 1970-01-01
      • 2017-01-24
      • 1970-01-01
      相关资源
      最近更新 更多