backtrace-logging
v0.2.2
Published
Hide unnecessary logs until an error occurs
Downloads
11
Maintainers
Readme
backtrace-logging
Hide unnecessary logs¹ until an error² occurs.
Loosely based implementation of http://www.exampler.com/writing/ring-buffer.pdf
- ¹
console.debug/warn
in Browser/Node,util.debug
and optionallyprocess.stdout/err
in Node. - ²
window.on(error)
in Browser,process.on(uncaughtException, exit)
in Node. - Auto-register for plug-n-play use, using import.meta.url query strings
- Customizable API for advanced usage
Install
npm install backtrace-logging
Usage
Just import this in NodeJS and all your console.debug
and console.warn
logs will be buffered (upto capacity=10
) until the end (process.on(error)
):
import 'backtrace-logging/node.js'
Or this in the browser with some customizations:
import 'backtrace-logging/browser.js?console=log,debug,warn&capacity=10'
API
Replace …/node.js
with …/browser.js
accordingly.
Core
import BacktraceLogging from 'backtrace-logging'
const bl = new BacktraceLogging(opts)
opts.capacity
[number=10]
How many messages to bufferopts.queue
[Queue]
Custom queue for fn-bufferopts.store
[Map]
Custom map to store{ original => patch }
function pairs
Patch a function to buffer its calls
bl.fn(fn, opts)
fn
<function>
Function to patchopts
[object]
options for fn-buffer
Example:
console.log = bl.fn(console.log)
Patch an object's key method with the patched function
bl.object(object, key, opts)
object
<object>
Object to patchkey
<string>
Key to patch in theobject
opts
[object]
options for fn-buffer
Example:
bl.object(console, 'log')
Get the original function of the patched function back
bl.get(patch)
patch
<function>
The patched function
Example:
console.log = bl.get(console.log) // restored
Flush the queue
bl.flush()
Register Helper
?auto=false
must be passed to disable auto-registration
import { register } from 'backtrace-logging/node.js?auto=false'
register(meta, opts = meta.opts)
Browser/Node
Node only
meta.util
[boolean]
Patch util.debugmeta.process
[array]
Keys to patch in process (stdout|stderr
)meta.file
[string]
File to append skipped logs to
Auto Register
Requiring …/node.js
without ?auto=false
calls the register
helper function automatically with meta
options parsed from import.meta.url.
Pass the values of meta
object as a URL query string.
Arrays must be passed as comma-separated values.
import 'backtrace-logging/browser.js?console=log,debug,warn&capacity=10'