2011-02-02 52 views
5

我正在使用log4javascript記錄和跟蹤JavaScript代碼中的問題。我以前曾見過類似的日誌記錄輔助工具,但我很難理解如何使用每個日誌級別來更加有用和高效。大多數情況下,我最終會記錄調試,信息或跟蹤,而不會真正意識到每個人的工作效率。隨着代碼越來越大,越來越艱難,我覺得日誌比幫助更麻煩。如何有效地使用記錄機制?

有人可以給我一些指導/幫助,以便我可以很好地使用記錄機制。

以下是由log4javascript支持不同的日誌級別:

  1. log4javascript.Level.ALL
  2. log4javascript.Level.TRACE
  3. log4javascript.Level.DEBUG
  4. log4javascript.Level.INFO
  5. log4javascript.Level.WARN
  6. log4javascript.Level.ERROR
  7. log4javascript.Level.FATAL

回答

15

我log4javascript的作者,我每天都用它在我的工作。以下是我如何使用它:

  • 我傾向於最頻繁地使用debug()trace()。我使用trace()來記錄低級別操作,當試圖尋找一個錯誤時,用debug()來記錄更多的程序流程。我的控制檯閾值設置爲DEBUG,因爲我通常使用的編碼方式是,我沒有跟蹤消息使日誌混亂,然後在需要查看跟蹤消息時將其切換到ALL
  • 我使用info()相當多,通常會使日誌控制檯中的某些特定消息更加突出。
  • 我自由使用group()(請參閱http://log4javascript.org/docs/manual.html#loggers)將特定操作的日誌分組,並允許我展開和摺疊日誌記錄塊。組也可以嵌套。
  • 我將日誌初始化代碼保存在一個地方,併爲我的應用程序的每個組件提供一個單獨的記錄器(它從根記錄器繼承)。這使我可以爲特定組件設置日誌記錄閾值。

例如:

var component1 = (function() { 
    var log = log4javascript.getLogger("MyApp.Components.Component1"); 

    // Implementation stuff 
})(); 

var component2 = (function() { 
    var log = log4javascript.getLogger("MyApp.Components.Component2"); 

    // Implementation stuff 
})(); 

在日誌初始化代碼:

// Create a console appender that is inherited by all loggers 
var appender = new log4javascript.PopUpAppender(); 
appender.setThreshold(log4javascript.Level.DEBUG); 

// Limit the number of messages displayed in the console at any one time 
appender.setMaxMessages(2000); 

log4javascript.getRootLogger().addAppender(appender); 

// Disable all logging except ERROR and FATAL for the "MyApp.Components" 
// logger and all its descendants (including "MyApp.Components.Component1" and 
// "MyApp.Components.Component2") 
log4javascript.getLogger("MyApp.Components").setLevel(log4javascript.Level.ERROR); 

這東西是共同所有log4x日誌框架,所以從log4j的或log4net的文檔都將適用。例如,舊的但仍然相關的log4j short manual可能會有所幫助。

+0

哇!謝謝Tim。非常好和完整的答案。 – 2011-02-02 11:04:43