UNPKG

@skaikru/logmark

Version:

A simple colored console logger with timestamps

53 lines (52 loc) 2.43 kB
import chalk from 'chalk'; const getFormattedDateTime = (format = 'full') => { const date = new Date(); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); const hours = String(date.getHours()).padStart(2, '0'); const minutes = String(date.getMinutes()).padStart(2, '0'); const seconds = String(date.getSeconds()).padStart(2, '0'); return format === 'full' ? `${year}-${month}-${day} - ${hours}:${minutes}:${seconds}` : `${hours}:${minutes}:${seconds}`; }; const formatMessages = (...messages) => { return messages .map((msg) => { if (typeof msg === 'object') { return JSON.stringify(msg, null, 2); } return msg; }) .join(' '); }; export const createLogmark = (options = {}) => { const { enableColors = true, timeFormat = 'full', debugInProduction = false, } = options; const logmark = { info: (...messages) => { const formattedMessage = formatMessages(...messages); console.log(`${enableColors ? chalk.green('[INFO]') : '[INFO]'} ${getFormattedDateTime(timeFormat)} - ${formattedMessage}`); }, warn: (...messages) => { const formattedMessage = formatMessages(...messages); console.warn(`${enableColors ? chalk.yellow('[WARN]') : '[WARN]'} ${getFormattedDateTime(timeFormat)} - ${formattedMessage}`); }, error: (...messages) => { const formattedMessage = formatMessages(...messages); console.error(`${enableColors ? chalk.red('[ERROR]') : '[ERROR]'} ${getFormattedDateTime(timeFormat)} - ${formattedMessage}`); }, debug: (...messages) => { if (process.env.NODE_ENV !== 'production' || debugInProduction) { const formattedMessage = formatMessages(...messages); console.debug(`${enableColors ? chalk.blue('[DEBUG]') : '[DEBUG]'} ${getFormattedDateTime(timeFormat)} - ${formattedMessage}`); } }, success: (...messages) => { const formattedMessage = formatMessages(...messages); console.log(`${enableColors ? chalk.greenBright('[SUCCESS]') : '[SUCCESS]'} ${getFormattedDateTime(timeFormat)} - ${formattedMessage}`); }, }; return logmark; }; export const logmark = createLogmark();