Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lesander/console.history
:scroll: Store all javascript console logs in console.history
https://github.com/lesander/console.history
console history history-array javascript logging node npm-package
Last synced: 15 days ago
JSON representation
:scroll: Store all javascript console logs in console.history
- Host: GitHub
- URL: https://github.com/lesander/console.history
- Owner: lesander
- License: mit
- Created: 2016-09-01T15:47:33.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2020-06-28T16:21:46.000Z (over 4 years ago)
- Last Synced: 2024-10-03T23:35:49.331Z (about 1 month ago)
- Topics: console, history, history-array, javascript, logging, node, npm-package
- Language: JavaScript
- Homepage: https://git.io/console
- Size: 49.8 KB
- Stars: 36
- Watchers: 6
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# console.history
[![npm](https://img.shields.io/npm/v/console.history.svg)]()
[![GitHub release](https://img.shields.io/github/release/lesander/console.history.svg?maxAge=2592000)]()
[![npm](https://img.shields.io/npm/dt/console.history.svg)]()
[![Code Climate](https://codeclimate.com/github/lesander/console.history/badges/gpa.svg)](https://codeclimate.com/github/lesander/console.history)
[![BCH compliancy](https://bettercodehub.com/edge/badge/lesander/console.history)](https://bettercodehub.com)
[![Build Status](https://travis-ci.org/lesander/console.history.svg?branch=master)](https://travis-ci.org/lesander/console.history)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](https://github.com/lesander/console.history/releases/latest) on GitHub, or use jsDelivr's CDN to get the latest version directly in your browser:
```html```
See an example entry to the history array below. This example is from the [`test/test.js`](test/test.js) file.
```json
{
"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`:
```shell
npm install console.history
```
```js
require('console.history')
console.log('Hello World!')
```
At this point, the `console.history` array is populated with one entry:
```js
[
{
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. (/.../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.```js
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.![](test/diagram.png)
The code is not that hard to understand, see [`console-history.js`](/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`](https://jekyllrb.com) in the project's directory, navigating to `localhost:4000/test` in your browser and opening [DevTools](https://developer.chrome.com/devtools).
```shell
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](/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.