Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class CustomConsole {
- constructor( prefix, initial = prefix.substr( 0, 2 ) ) {
- this.LOG_LEVELS = [ `error`, `warn`, `info`, `log`, `trace` ];
- this.indent = ``;
- this.globalPrefix = prefix;
- this.initialPrefix = initial;
- this.logLevel = this.LOG_LEVELS.indexOf( `info` );
- }
- _write( data, channel = `info`, prefix = false, unfomatted = false ) {
- if ( this.LOG_LEVELS.indexOf( channel ) <= this.logLevel ) {
- const template = unfomatted ? data :
- `${this.indent}[${channel.toUpperCase()}] [${this.initialPrefix}]${prefix ? ` -${prefix}-` : ``} ${data}`;
- switch ( channel ) {
- case `log`:
- console.log( template );
- break;
- case `info`:
- console.info( template );
- break;
- case `warn`:
- console.warn( template );
- break;
- case `error`:
- console.error( template );
- break;
- case `trace`:
- console.trace( template );
- break;
- default:
- throw new Error( `Invalid Channel ${channel}!` );
- }
- }
- }
- error( data, prefix = false ) {
- this._write( data, `error`, prefix );
- }
- warn( data, prefix = false ) {
- this._write( data, `warn`, prefix );
- }
- info( data, prefix = false ) {
- this._write( data, `info`, prefix );
- }
- log( data, prefix = false ) {
- this._write( data, `log`, prefix );
- }
- trace( data, prefix = false ) {
- this._write( data, `trace`, prefix );
- }
- entrance( label = false, loglevel = `info` ) {
- const template = label ? `<${label}>` : `[${this.globalPrefix}]`;
- this._write( `
- ${this.indent}${template} - Starting...
- `, loglevel, false, true );
- this.indent = `${this.indent} `;
- console.group( template );
- }
- exit( label = false, loglevel = `info` ) {
- const template = label ? `<${label}>` : `[${this.globalPrefix}]`;
- console.groupEnd( label ? label : this.globalPrefix );
- this.indent = this.indent.substr( 2 );
- this._write( `
- ${this.indent}${template} - Completed!
- `, loglevel, false, true );
- }
- setLogLevel( level ) {
- this.logLevel = typeof level === `string` ? this.LOG_LEVELS.indexOf( level ) : level;
- this.info( `Log Level = ${level}.`, `Setting` );
- }
- }
- // Demostration
- const LOG = new CustomConsole( `My Awsome Logger`, `MAL` );
- LOG.entrance();
- for ( const l of LOG.LOG_LEVELS ) {
- LOG.setLogLevel( l );
- LOG.entrance( `Log level ${l}` );
- LOG.log( `This is log ${l}.` );
- LOG.info( `This is info ${l}.` );
- LOG.warn( `This is warn ${l}.` );
- LOG.error( `This is error ${l}.` );
- LOG.trace( `This is trace ${l}.` );
- LOG.exit( `Log level ${l}` );
- }
- LOG.exit();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement