JavaScript console wrapper + extra features
conso1e ( conso[one]e ) is a fully functional console
wrapper with additional features. Since it wraps every console
method, you can simply replace console
with it.
Install it with NPM:
npm i conso1e
require()
it and create()
an instance:
const console = require('conso1e').create();
console.log('Hello');
If you want to replace console
with conso1e entirely, overwrite the global console
variable:
console = require('conso1e').create(); // Overwriting the builtin console object
console.log('Hello');
// You can still access the original console
// via .core property
console.core.log('Hello');
* Beware that overwriting console
affects the entire application
Instead of creating a local instance, you can also use global()
to access the global instance:
const console = require('conso1e').global();
global()
always returns the same instance. In other words, it returns singleton.
The global instance persists across different modules.
ES module loading is also supported:
import Conso1e from 'conso1e';
const console = Conso1e.create(); // Local instance
const console = Conso1e.global(); // Global instance
Starts suppression. During suppression, any method calls don’t output to the console.
Suppression can be bypassed by prefixing methods with underscore (ex. console.log()
→ console._log()
).
Ends suppression.
Outputs and clears the current buffers
Clears the current buffers without output
Sets or returns an option value by name
this
if value
is provided. Otherwise, returns the option valueAvailable Options:
name | type | description |
---|---|---|
label |
string | If any string is set, it appears preceding every console output. |
forceOutput |
boolean | If it is true , suppression is completely ignored. |
// Example
let console = require('conso1e').create();
console.option('label', '[LABEL]');
console.log('ABC'); // '[LABEL] ABC'
console.log('DEF'); // '[LABEL] DEF'
Creates and returns a subcontext. Subcontext is a child conso1e instance that inherits the current state and the core from the parent.
A subcontext defaults to the parent’s current state and the option values. However you can override these individually.
// Example
let parent = require('conso1e').create();
let child = parent.subcontext();
parent.option('label', '[LABEL]');
parent.log('ABC'); // '[LABEL] ABC'
child.log('123'); // '[LABEL] 123' // label is inherited
child.option('label', '[SUB_LABEL]');
parent.log('ABC'); // '[LABEL] ABC'
child.log('123'); // '[SUB_LABEL] 123' // label is overriden
The real console
object that is wrapped
@type object *(read only)
The parent conso1e instance. It is null
if this
is not a subcontext
@type object \
Whether suppression is currently active, or not
@type boolean *(read only)
Whether buffering is currently active, or not
@type boolean *(read only)
Whether the console has any buffered call
@type boolean *(read only)
create()
function has the exact same parameters as the constructor of the built-in Console class.
const debugLog = fs.createWriteStream('./debug.log');
const errorLog = fs.createWriteStream('./error.log');
const console = require('conso1e').create(debugLog, errorLog);
You can also pass a console
object to wrap()
:
const myConsole = new console.Console(debugLog, errorLog);
const console = require('conso1e').wrap(myConsole);
© 2020 amekusa