Nodejs log-switch 实用 module 推荐

Nodejs log-switch 实用 module 推荐

Log Switch

安装

npm install log-switch

为什么要用 Log Switch

最近项目里面最长碰到的问题就是,要打印的 log 实在太多了。

for (var i = 0; i < 100000; i++) {
  console.log('hello %d', i);
}

输出

hello 0
hello 1
...
hello 99998
hello 99999
[Finished in 40.6s]

如你所见,简单的输出 10万个 log 需要花 40.6 秒的时间。做一次测试的话实在是难以接受的情况。

关闭 console.log

为了避免把时间浪费在打 log 上,你可以使用 log switch 来屏蔽 log。

var logs = require('log-switch');

logs.disable();

for (var i = 0; i < 100000; i++) { console.log(‘hello %d’, i); }

logs.restore();

console.log(‘over’);

输出

over
[Finished in 0.2s]

于是,这样就节约了 40 秒的时间。

自动启用 log

有的时候并不是所有的 log 都要屏蔽, 特别是在程序报错的时候,那么没关系在 throw Error 的时候 LogsSwitch 可以自动启用 log 并输出。

var logs = require('log-switch');

logs.setQueueLength(10); // 设置输出栈 logs.disable();

for (var i = 0; i < 100000; i++) { if (i === 50000) { throw new Error(‘Error string’); } console.log(‘hello %d’, i); }

输出

hello 49989
hello 49990
hello 49991
hello 49992
hello 49993
hello 49994
hello 49995
hello 49996
hello 49997
hello 49998
hello 49999

E:\node\log-switch\test.js:9
  throw new Error('Error string');
  ^
Error: Error string
    at Error (<anonymous>)
    at new Error (E:\node\log-switch\t.js:55:22)
    at Object.<anonymous> (E:\node\log-switch\test.js:9:9)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:901:3

[Finished in 0.2s with exit code 8]
[cmd: node E:\node\log-switch\test.js]

测试机配置

    OS : Microsoft Windows 7 Ultimate (x64)
Processor : AMD64 Family 16 Model 6 Stepping 3 AuthenticAMD ~3000 Mhz

npm: https://npmjs.org/package/log-switch

github: https://github.com/Lellansin/logSwitch


2 回复

Nodejs log-switch 实用 module 推荐

Log Switch

log-switch 是一个非常实用的 Node.js 模块,可以帮助你在开发和生产环境中更灵活地控制日志输出。通过这个模块,你可以轻松地开启或禁用 console.log,从而优化性能。

安装

首先,你需要通过 npm 安装 log-switch

npm install log-switch

为什么要用 Log Switch

在大型项目中,日志输出可能变得非常多,特别是在调试阶段。过多的日志输出不仅会消耗大量的时间,还可能影响程序的性能。例如,以下代码会在控制台中输出 100,000 次 “hello”:

for (var i = 0; i < 100000; i++) {
  console.log('hello %d', i);
}

执行这段代码需要花费大约 40.6 秒的时间。这显然是不可接受的,尤其是在进行快速测试时。

关闭 console.log

log-switch 可以帮助你避免这种性能问题。通过禁用 console.log,可以显著提高程序的运行速度。

var logs = require('log-switch');

logs.disable(); // 禁用所有日志输出

for (var i = 0; i < 100000; i++) {
  console.log('hello %d', i);
}

logs.restore(); // 恢复日志输出

console.log('over');

输出结果将是:

over
[Finished in 0.2s]

通过禁用日志输出,我们节省了大量的时间。

自动启用 log

在某些情况下,你可能希望在程序发生错误时自动启用日志输出。log-switch 提供了这样的功能,你可以设置一个队列长度来保存错误发生前的日志信息。

var logs = require('log-switch');

logs.setQueueLength(10); // 设置输出栈长度为 10
logs.disable(); // 禁用日志输出

try {
  for (var i = 0; i < 100000; i++) {
    if (i === 50000) {
      throw new Error('Error string');
    }
    console.log('hello %d', i);
  }
} catch (err) {
  logs.enable(); // 错误发生时启用日志输出
  console.error(err);
}

输出结果将是:

hello 49989
hello 49990
hello 49991
hello 49992
hello 49993
hello 49994
hello 49995
hello 49996
hello 49997
hello 49998
hello 49999

Error: Error string
    at Object.<anonymous> (E:\node\log-switch\test.js:9:9)
    ...

通过这种方式,你可以在程序发生错误时查看之前的一些关键日志信息,而不会因为大量日志输出而影响性能。

测试机配置

  • OS: Microsoft Windows 7 Ultimate (x64)
  • Processor: AMD64 Family 16 Model 6 Stepping 3 AuthenticAMD ~3000 Mhz

更多详细信息可以参考 npm 页面GitHub 仓库

通过使用 log-switch,你可以更高效地管理和控制你的日志输出,从而提升开发和生产环境中的程序性能。


Node.js log-switch 实用模块推荐

安装

npm install log-switch

为什么要用 log-switch

在项目开发中,日志的输出量可能会非常大,导致程序运行效率降低。例如,连续输出10万个日志可能需要花费近40秒的时间。

关闭 console.log

为了提高程序的运行效率,可以使用 log-switch 模块来禁用不必要的日志输出。

const logs = require('log-switch');

logs.disable(); // 禁用日志

for (let i = 0; i < 100000; i++) {
  console.log('hello %d', i);
}

logs.restore(); // 恢复日志

console.log('over');

输出

over
[Finished in 0.2s]

通过上述代码,我们可以在不显著影响程序性能的情况下,只保留必要的日志输出。

自动启用日志

在某些情况下,比如程序发生错误时,你可能希望自动启用日志输出。log-switch 模块支持这种需求。

const logs = require('log-switch');

logs.setQueueLength(10); // 设置输出队列长度为10
logs.disable(); // 禁用日志

try {
  for (let i = 0; i < 100000; i++) {
    if (i === 50000) {
      throw new Error('Error string');
    }
    console.log('hello %d', i);
  }
} catch (error) {
  logs.enable(); // 发生错误时启用日志
  console.error(error.message);
}

输出

hello 49989
hello 49990
hello 49991
hello 49992
hello 49993
hello 49994
hello 49995
hello 49996
hello 49997
hello 49998
hello 49999

Error: Error string
[Finished in 0.2s with exit code 8]

通过这种方式,我们可以确保在关键情况下(如发生错误)能够及时查看详细的日志信息,从而快速定位问题。

测试环境

  • 操作系统: Microsoft Windows 7 Ultimate (x64)
  • 处理器: AMD64 Family 16 Model 6 Stepping 3 AuthenticAMD ~3000 Mhz

更多关于 log-switch 的信息,可参阅:

回到顶部