GithubHelp home page GithubHelp logo

airmeet / console.history Goto Github PK

View Code? Open in Web Editor NEW

This project forked from lesander/console.history

0.0 1.0 0.0 53 KB

:scroll: Store all javascript console logs in console.history

Home Page: https://git.io/console

License: MIT License

JavaScript 92.31% HTML 1.85% Shell 5.83%

console.history's Introduction

console.history

npm GitHub release npm Code Climate BCH compliancy Build Status

A very small library to store all console logs in console.history.

Usage

Include console-history.js or console-history.min.js in your page or script before any console function gets called. All calls to console.log, console.info, console.warn, console.error and console.debug will be intercepted and stored after doing so. Including every parameter passed to those functions.

Getting Started

This library works in almost all browsers and on any NodeJS server.

Browser

You can download the latest release on GitHub, or use jsDelivr's CDN to get the latest version directly in your browser:

<script src="https://cdn.jsdelivr.net/gh/lesander/[email protected]/console-history.min.js"></script>

See an example entry to the history array below. This example is from the test/test.js file.

{
  "type": "warn",
  "timestamp": "Thu, 01 Sep 2016 15:38:28 GMT",
  "arguments": {
    "0": "Something went wrong, but we're okay!"
  },
  "stack": {
    "0": "at inner (http://localhost:1337/test/test.js:6:11)",
    "1": "at outer (http://localhost:1337/test/test.js:2:3)",
    "2": "at http://localhost:1337/test/test.js:9:1"
  }
}

Server (NodeJS)

Fetch the latest version of console.history:

npm install console.history
require('console.history')
console.log('Hello World!')

At this point, the console.history array is populated with one entry:

[
  {
    type: 'log',
    timestamp: 'Thu, 16 Mar 2017 17:24:25 GMT',
    arguments: { '0': 'Hello World!' },
    stack: [
      'at Console.console._intercept (/.../console.history/test/node.js:4:11)',
      'at Object.<anonymous> (/.../console.history/test/node.js:6:9)',
      'at Module._compile (module.js:571:32)',
      'at Object.Module._extensions..js (module.js:580:10)',
      'at Module.load (module.js:488:32)',
      'at tryModuleLoad (module.js:447:12)',
      'at Function.Module._load (module.js:439:3)',
      'at Module.runMain (module.js:605:10)'
    ]
  }
]

Intercepting the log function

You can add your own middleware to console.history with the function console._intercept(type, args). This can prove useful when you need to access a new log entry before or after it gets logged and added to the history array. See an example below.

console._intercept = function (type, args) {

  if (type === 'error') {
    // send the error to your server or do something else..
  }

  // pass the log intent to the collector.
  console._collect(type, args)
}

Limitations

Every saved console log is stored locally in the array console.history. A page reload will erase all history, as the array is not permanently stored. You could use localStorage or sessionStorage for that.

How it works

This script is basically a man-in-the-middle for all console[log/info/warn/error/debug] functions. Every call gets intercepted, printed and added to the history array.

The code is not that hard to understand, see console-history.js with in-line comments explaining the code.

Contributing

If you'd like to contribute to console.history, or file a bug or feature request, please head over to the issue tracker or open a pull request.

Testing browser-side is as easy as running jekyll serve in the project's directory, navigating to localhost:4000/test in your browser and opening DevTools.

git clone https://github.com/lesander/console.history.git
cd console.history
jekyll serve

License

This software is open-sourced under the MIT License (see the LICENSE file for the full license). So within some limits, you can do with the code whatever you want. However, if you like and/or want to re-use it, I'd really appreciate a reference to this project page.

The software is provided as is. It might work as expected - or not. Just don't blame me.

console.history's People

Contributors

lesander avatar

Watchers

James Cloos 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.