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

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