JavaScript 日志记录¶
本文档详细介绍了 JavaScript 中的日志记录。有关基于 c++ 的日志记录,请参阅 Gecko 日志记录文档。
关于日志记录的说明¶
日志记录原则¶
一般的原则是在默认情况下保持浏览器控制台“干净”,不输出日志,除非遇到错误或潜在的警告。
还有一个 测试,如果启动时有任何意外的日志,该测试将失败。
对于需要使用调试日志记录的情况,通常可以通过首选项启用默认情况下关闭的日志记录来解决。
还要注意,即使未显示开发者工具,控制台日志记录也会对性能产生影响。
已弃用的实用程序¶
在代码树中,有两个模块应该被视为已弃用:Log.sys.mjs 和 Console.sys.mjs。作为 一个日志记录器 工作的一部分,现有用法应该过渡到使用 console.createInstance
。
console
对象在 Firefox 代码库的所有区域都可用,并且与开发者工具的集成比现有模块更好。
使用 Console Web API 进行日志记录¶
Console Web API 在整个 Firefox 代码库中可用。它是最佳工具,因为它直接与 开发者工具 集成,后者提供了详细的日志记录功能。
默认情况下,日志将输出到浏览器控制台,根据控制台中本身选择的进程和过滤器。
日志也可以通过 devtools.console.stdout.chrome
首选项输出到标准输出。默认情况下,对于非官方版本,此选项设置为 true,对于官方版本,此选项设置为 false,这意味着大多数情况下,开发人员无需更改它。
console.createInstance¶
在某些情况下,将日志记录归因于特定模块或由首选项控制很有用。在这种情况下,可以使用 console.createInstance
创建特定的日志记录实例。
例如
const lazy = {};
ChromeUtils.defineLazyGetter(lazy, "logConsole", () => {
return console.createInstance({
maxLogLevelPref: "browser.download.loglevel",
prefix: "Downloads",
});
});
首选项可能具有典型的默认值 Error
。可用级别列在 Console.webidl 中。
这将创建一个延迟初始化的控制台实例,可以使用如下方式:
// Logs by default.
lazy.logConsole.error("Something bad happened");
// Doesn't log unless the preference was changed prior to logging.
lazy.logConsole.debug("foo", 123)
注意:Worker 无法访问首选项,因此必须使用 maxLogLevel
而不是 maxLogLevelPref
。
console.createInstance 的其他选项¶
console.createInstance
可以传递其他选项。请参阅 ConsoleInstanceOptions
在 Web IDL 中了解更多详细信息
其中最有用的可能是 maxLogLevel
,它允许手动设置日志级别,这对于从其他日志记录系统(其中已存在首选项)过渡到 console.createInstance
可能很有用。