如何有效地使用日志记录机制?

时间:2011-02-02 09:08:23

标签: javascript debugging logging log4javascript

我正在使用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

1 个答案:

答案 0 :(得分:15)

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

  • 我倾向于最频繁地使用debug()trace()。我在尝试寻找错误时使用trace()来记录低级别操作,并使用debug()来更一般地记录程序流。我将控制台阈值设置为DEBUG以进行常规编码,这样我就没有跟踪日志混乱的跟踪消息,然后在需要查看跟踪消息时将其切换到ALL。 LI>
  • 我使用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可能有所帮助。