JavaScript中的日志记录通常借助console对象实现,它提供log、info、warn和error等方法,默认输出至浏览器控制台。然而,console对象本身并不支持日志级别设置。 我们可以通过自定义函数模拟日志级别功能,灵活控制输出信息。
以下示例演示如何自定义JS日志级别:
// 定义日志级别 const LogLevel = { OFF: 0, ERROR: 1, WARN: 2, INFO: 3, DEBUG: 4 }; // 设置当前日志级别 let currentLogLevel = LogLevel.INFO; // 自定义日志函数 function log(level, message) { if (level >= currentLogLevel) { console[level === LogLevel.OFF ? 'log' : level](message); // 处理OFF级别 } } // 使用自定义日志函数 log(LogLevel.DEBUG, '这是一条调试信息'); // 不会显示 log(LogLevel.INFO, '这是一条普通信息'); // 会显示 log(LogLevel.WARN, '这是一条警告信息'); // 会显示 log(LogLevel.ERROR, '这是一条错误信息'); // 会显示 log(LogLevel.OFF, '这是一条关闭级别的信息'); // 不会显示,但代码更健壮
代码首先定义了LogLevel对象,包含不同日志级别。currentLogLevel变量控制当前日志级别。log函数接收日志级别和消息,仅当级别高于或等于currentLogLevel时才输出。 改进后的代码更健壮地处理了LogLevel.OFF的情况。
通过修改currentLogLevel的值,例如设置为LogLevel.ERROR,即可只显示错误级别的日志。 需要注意的是,此方法仅控制输出,不会限制console对象本身的功能。 更高级的日志管理需求,建议使用如winston或loglevel等第三方库。