Skip to content

Instantly share code, notes, and snippets.

@jonasgeiler
Last active January 27, 2021 06:34
Show Gist options
  • Save jonasgeiler/3fb738fe420b32a60003e3a01a916207 to your computer and use it in GitHub Desktop.
Save jonasgeiler/3fb738fe420b32a60003e3a01a916207 to your computer and use it in GitHub Desktop.
A tiny little logger written in JS
const LEVELS = [ 'debug', 'info', 'warn', 'error' ];
const DEFAULT_LEVEL = 'info';
function Logger(logLevel = DEFAULT_LEVEL) {
if (!LEVELS.includes(logLevel)) throw new Error('Invalid log level');
LEVELS.forEach(level => {
const consoleLog = level in console ? console[level] : console.log;
Logger.prototype[level] = (...msg) =>
LEVELS.indexOf(level) >= LEVELS.indexOf(logLevel) &&
consoleLog(`[${new Date().toLocaleString()}]`, `${level.toUpperCase()}:`, ...msg);
});
}
module.exports = Logger;
const LEVELS = [ 'debug', 'info', 'warn', 'error' ];
const DEFAULT_LEVEL = 'info';
module.exports = {
register: (logLevel = DEFAULT_LEVEL) => {
if (!LEVELS.includes(logLevel)) throw new Error('Invalid log level');
const globals = typeof global !== 'undefined' ? global : window;
LEVELS.forEach(level => {
const consoleLog = level in console ? console[level] : console.log;
globals[level] = (...msg) =>
LEVELS.indexOf(level) >= LEVELS.indexOf(logLevel) &&
consoleLog(`[${new Date().toLocaleString()}]`, `${level.toUpperCase()}:`, ...msg)
})
},
};

USAGE

// Get log level (f.e. "info")
require('dotenv').config();
const { LOG_LEVEL } = process.env;


// Register logger
require('./logger').register(LOG_LEVEL);


// Use logger
debug('This is a debug message');
info('This is an info message');
warn('This is a warning message');
error('This is an error message');

ALT USAGE

// Get log level (f.e. "info")
require('dotenv').config();
const { LOG_LEVEL } = process.env;


// Init logger
const Logger = require('./logger');
const log = new Logger(LOG_LEVEL);


// Use logger
log.debug('This is a debug message');
log.info('This is an info message');
log.warn('This is a warning message');
log.error('This is an error message');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment