Keep a history of your javascript's console.* calls:

npm install historical-console
4 downloads in the last month


Keep a history of your javascript's console.* calls:

historicalConsole(function(console) {
  console.debug(foo, 'asdf');
  (function someName() {
    console.info('function name test');

The resulting console.history:

 ['debug', {fooObj: 'O'}, 'asdf', 'caller:function(console) { console.debug(foo, '],
 ['info' , 'function name test' , 'caller:someName']

Recent history can then be bundled with error reports. Generating this console.history array is the point of this library.

Don't care about caller:names? console.options.addCaller(false)

Function naming:

If you don't name your functions (or use coffeescript), I include the first 40 characters of the function's .toString value. Change the 40 char snippit length with: console.options.functionSnippetLength(30)

Track calls to alert:

historicalConsole(function(console, alert) {

Globally intercept console calls:

historicalConsole(function(console) {
  window.console = console;

caller:null means a function was called at the global scope (no function called it)


To play it super safe:

myModule.historicalConsole = historicalConsole.noConflict();

Integrate with other things:

Override console.history.add with your own callback! This function is called whenever any console.* method is called. For example, when you call console.log('foo'), console.history.add will be called with this one argument:

['log', 'foo', 'caller:someFunc']

Maybe you want to receive all entries and do something interesting wtih them:

historicalConsole(function(console) {
  console.history.add = function consoleHistoryCallback(logStatement) {
    //~whateva you want bro~ 

The console.history array will not exceed 200 entries, or whatever maximum you set:


TODO: console.dir, profile, and profileEnd

Other functions are exposed on the log object for your flexibility, if you want to understand and use these, read over the fully commented source below

npm loves you