一千萬個為什麽

搜索

log4js ConsoleAppender初始化

我想知道是否有人碰巧使用 Log4js ?似乎正常的 ConsoleAppender 並不總是可以在添加後立即使用到記錄器對象...如果我在文檔中有兩個順序腳本標記,如:

//Initialize logger
<script type="text/javascript">                   
      var logger = new Log4js.getLogger("JSLOG");
      logger.addAppender(new Log4js.ConsoleAppender(logger, false));
      logger.setLevel(Log4js.Level.INFO);         
</script>


//Use logger
<script type="text/javascript">
     logger.info('Test test');
</script>

...它會導致控制臺彈出窗口(彈出窗口)出現並在頁面加載時顯示錯誤消息:

12:58:23 PM WARN Log4js - Could not run the listener function() {
    return fn.apply(object, arguments);
}. 
TypeError: this.outputElement is null

控制臺仍然是初始化的,之後它就在那裏,但是對於第一個記錄器調用它似乎並不完全。如果我使第一個記錄器調用setTimeout(“logger.info('test test')”,1000),它就沒有錯誤。所以它就像它沒有立即準備好。任何人之前都會看到這個或知道解決方法可能是什麽?

幹杯

最佳答案

我建議您使用 log4javascript 嗎?它具有非常相似的API和卓越的控制臺,並且正在積極開發中。 log4javascript中的等價物將是:

<script type="text/javascript" src="log4javascript.js"></script>

<script type="text/javascript">                   
      //Initialize logger
      var logger = log4javascript.getDefaultLogger();
      logger.setLevel(log4javascript.Level.INFO);         
</script>


<script type="text/javascript">
     //Use logger
     logger.info('Test test');
</script>

我應該指出我是log4javascript的作者。

轉載註明原文: log4js ConsoleAppender初始化