Git Product home page Git Product logo

logswitch's Introduction

Log Switch

What's the problem?

The problem is so many logs in my program.

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

Result

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

As you see the info, call the console.log 100,000 times takes 40.6 second. that's so bad.

Disable console.log

To avoid this situation, you can use LogSwitch to disable it.

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

logs.disable();

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

logs.restore();

console.log('over');

Result

over
[Finished in 0.2s]

Auto enable logs

In case the error thrown, LogsSwitch can auto print the last 10 logs.

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

logs.setQueueLength(10);
logs.disable();

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

test();

Result

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

F:\node\log-switch\test.js:9
      throw new Error('Error string');
      ^
Error: Error string
    at Error (<anonymous>)
    at new Error (F:\node\node_modules\log-switch\logSwitch.js:81:24)
    at test (F:\node\log-switch\test.js:9:13)
    at Object.<anonymous> (F:\node\log-switch\test.js:15:1)
    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]

Track logs

track-test.js

function test() {
    console.log('where is this log?');
}

function twiceCall() {
    console.log('second file')
    test();
}

exports.twiceCall = twiceCall;

t.js

var logs = require('log-switch');
var twiceCall = require('./track-test').twiceCall;

logs.track();
console.log('first file');
twiceCall();

logs.restore(); // disable the track

Result

first file
  at  (F:\node\log-switch\t.js:4)
second file
  at twiceCall (F:\node\log-switch\track-test.js:10)
where is this log?
  at test (F:\node\log-switch\track-test.js:6)
[Finished in 0.2s]

Test computer

The test data 40.6 second is comes from:

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

logswitch's People

Contributors

lellansin avatar

Watchers

James Cloos avatar rick.zhang avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.