backtrace-logging v0.2.2
backtrace-logging
Hide unnecessary logs¹ until an error² occurs.
Loosely based implementation of http://www.exampler.com/writing/ring-buffer.pdf
- ¹
console.debug/warnin Browser/Node,util.debugand optionallyprocess.stdout/errin 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-loggingUsage
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 theobjectopts[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) // restoredFlush 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 processmeta.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'