Skip to content

Instantly share code, notes, and snippets.

@Jerrylum
Last active August 14, 2020 18:36
Show Gist options
  • Save Jerrylum/ffc47984ca832d2e2ec3310cecafce15 to your computer and use it in GitHub Desktop.
Save Jerrylum/ffc47984ca832d2e2ec3310cecafce15 to your computer and use it in GitHub Desktop.
This is a very simple and beautiful logger
'use strict';
var RESET = '';
var SAFE = '';
var WARN = '';
var ERROR = '';
var VERBOSE = '';
const join = function(source, to) {
for (const [key, value] of Object.entries(source))
if (!(key in to))
to[key] = value;
}
const overrides = {
log: function() {
console.log(...this._package_msg(SAFE, arguments));
return this;
},
warn: function() {
console.warn(...this._package_msg(WARN, arguments));
return this;
},
error: function() {
console.error(...this._package_msg(ERROR, arguments));
return this;
},
verbose: function() {
console.log(...this._package_msg(VERBOSE, arguments));
return this;
},
_package_msg: function(color, args) {
const prefix = color + this._sender + ' > ' + RESET;
if (typeof args[0] === 'string') {
args[0] = prefix + args[0];
return args;
} else {
return [prefix, ...args];
}
},
_sender: null
};
join(console, overrides);
module.exports = function(sender) {
function Logger() {
return Logger.log(...arguments);
};
join(overrides, Logger);
Logger._sender = sender || 'Unknow';
return Logger;
};
@Jerrylum
Copy link
Author

Jerrylum commented Aug 14, 2020

// call like normal

express_log.verbose('This is blue');
ws_log.verbose('This is also blue');

// lazy log

express_log.log('This is green');
express_log('This is also green'); // lazy log

// chain functions

express_log('This is green')
    .log('This is also green')
    .warn('This is yellow')
    .error('This is red');
ws_log('This is green')
    .log('This is also green')
    .warn('This is yellow');

// extends Console class functions

express_log().dir(express_log); // lazy log with no arg and .dir from Console
ws_log.log().dir(ws_log); // . log with no arg and .dir from Console

@Jerrylum
Copy link
Author

Code:

var logger = require('./logger')('Server');

logger('Hello');
logger.warn('This is a very simple logger');
logger.error('Oh no! I don\'t feel so good');

Result:
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment