36 lines
859 B
JavaScript
36 lines
859 B
JavaScript
/* eslint no-console: 0 */
|
|
import zeroPad from './zero-pad.mjs';
|
|
|
|
const getTimestamp = () => {
|
|
const d = new Date();
|
|
return `${[d.getFullYear(), zeroPad(d.getMonth() + 1, 2), zeroPad(d.getDate(), 2)].join('/')} ${[
|
|
zeroPad(d.getHours(), 2),
|
|
zeroPad(d.getMinutes(), 2),
|
|
zeroPad(d.getSeconds(), 2),
|
|
].join(':')}`;
|
|
};
|
|
|
|
const wrapMessage = msg => `[${getTimestamp()}]: ${msg.map(m => JSON.stringify(m)).join(' ')}`;
|
|
|
|
const logger = {
|
|
log(...args) {
|
|
console.log(wrapMessage(args));
|
|
},
|
|
warn(...args) {
|
|
console.warn(wrapMessage(args));
|
|
},
|
|
error(...args) {
|
|
if (args[0] instanceof Error) {
|
|
console.error(getTimestamp(), args[0].stack);
|
|
return;
|
|
}
|
|
console.error(wrapMessage(args));
|
|
},
|
|
debug(...args) {
|
|
if (!process.env.DEBUG) return;
|
|
console.log(wrapMessage(args));
|
|
},
|
|
};
|
|
|
|
export default logger;
|