@skaikru/logmark
Version:
A simple colored console logger with timestamps
53 lines (52 loc) • 2.43 kB
JavaScript
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();