使用requirejs时无法使用log4javascript与InPageAppender一起使用

时间:2013-08-17 21:22:30

标签: requirejs log4javascript

如果我使用不带requirejs的log4javascript,那么所有内容(包括页内附加程序)都会按预期工作。

使用requirejs时,这会有效(会出现一个带警告的弹出窗口):

var log = log4javascript.getDefaultLogger();
log.warn("This is a test error message.");

但这不起作用(不显示页面区域):

var log4j = log4javascript.getLogger();

var log4jInPageAppender = new log4javascript.InPageAppender();

log4j.addAppender(log4jInPageAppender);

log4j.warn("This is a warning!");

它像这样收缩:

requirejs.config({
        shim: {'log4javascript': {exports: 'log4javascript'}
    }
});

似乎为log4javascript正确定义了所有内容,因此我的log4j和log4jInPageAppender变量设置为有效值。

1 个答案:

答案 0 :(得分:3)

问题是InPageAppender依赖于log4javascript自己的页面加载处理代码来知道它是否可以开始绘制自己。通过RequireJS加载时,页面已经加载,并且log4javascript的页面加载处理代码永远不会运行。

您可以致电log4javascript.setDocumentReady()来解决这个问题。最明智的做法似乎是在垫片init()函数中,但我不是RequireJS的专家,所以可能有更好的方法:

requirejs.config({
    shim: {
        'log4javascript': {
            exports: 'log4javascript',
            init: function() {
                log4javascript.setDocumentReady();
            }
        }
    }
});