2013-08-17 71 views
2

如果我在不使用requirejs的情况下使用log4javascript,则所有内容(包括页内appender)均按预期工作。使用requirejs时,无法使log4javascript与InPageAppender一起使用

当使用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和LO要正确定义g4jInPageAppender变量设置为有效值。

回答

3

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

您可以通过致电log4javascript.setDocumentReady()来解决此问题。最明智的地方要做到这一点,似乎是在垫片init()功能,但我在RequireJS没有专家,所以有可能是一个更好的办法:

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

这个伟大的工程添。 –

相关问题