log-switch 实用 module 推荐
发布于 10 年前 作者 lellansin 4708 次浏览 最后一次编辑是 8 年前

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

回到顶部