介绍
对 console 进行封装
TS 版本
import moment from 'moment';
enum ELoggerLeave {
error = 0,
warn = 1,
info = 2,
debug = 3
}
interface ILoggerOptions {
leave: keyof typeof ELoggerLeave;
}
class Logger {
#leave: ELoggerLeave = ELoggerLeave.debug;
constructor(opts: ILoggerOptions) {
this.#leave = ELoggerLeave[opts.leave];
}
log(level: ELoggerLeave, message?: string, ...args: any[]) {
if (ELoggerLeave[level] <= ELoggerLeave[this.#leave]) {
switch (level) {
case ELoggerLeave.error:
console.error(`[${ELoggerLeave[level].toUpperCase()}] ${moment().format('YYYY-MM-DD HH:mm:ss')} ${message}`, ...args);
break;
case ELoggerLeave.warn:
console.warn(`[${ELoggerLeave[level].toUpperCase()}] ${moment().format('YYYY-MM-DD HH:mm:ss')} ${message}`, ...args);
break;
case ELoggerLeave.info:
console.info(`[${ELoggerLeave[level].toUpperCase()}] ${moment().format('YYYY-MM-DD HH:mm:ss')} ${message}`, ...args);
break;
case ELoggerLeave.debug:
console.debug(`[${ELoggerLeave[level].toUpperCase()}] ${moment().format('YYYY-MM-DD HH:mm:ss')} ${message}`, ...args);
break;
default:
break;
}
}
}
debug(message?: string, ...args: any[]) {
this.log(ELoggerLeave.debug, message, ...args);
}
info(message?: string, ...args: any[]) {
this.log(ELoggerLeave.info, message, ...args);
}
warn(message?: string, ...args: any[]) {
this.log(ELoggerLeave.warn, message, ...args);
}
error(message?: string, ...args: any[]) {
this.log(ELoggerLeave.error, message, ...args);
}
}
const logger = new Logger({ leave: 'debug' });
export default logger;
JS 版本
import moment from 'moment';
const ELoggerLeave = {
error: 0,
warn: 1,
info: 2,
debug: 3
};
class Logger {
#leave = ELoggerLeave.debug;
constructor(opts) {
this.#leave = ELoggerLeave[opts.leave];
}
log(level, message, ...args) {
if (level <= this.#leave) {
switch (level) {
case ELoggerLeave.error:
console.error(`[error] ${moment().format('YYYY-MM-DD HH:mm:ss')} ====> ${message}`, ...args);
break;
case ELoggerLeave.warn:
console.warn(`[warn] ${moment().format('YYYY-MM-DD HH:mm:ss')} ====> ${message}`, ...args);
break;
case ELoggerLeave.info:
console.info(`[info] ${moment().format('YYYY-MM-DD HH:mm:ss')} ====> ${message}`, ...args);
break;
case ELoggerLeave.debug:
console.debug(`[debug] ${moment().format('YYYY-MM-DD HH:mm:ss')} ====> ${message}`, ...args);
break;
default:
break;
}
}
}
debug(message, ...args) {
this.log(ELoggerLeave.debug, message, ...args);
}
info(message, ...args) {
this.log(ELoggerLeave.info, message, ...args);
}
warn(message, ...args) {
this.log(ELoggerLeave.warn, message, ...args);
}
error(message, ...args) {
this.log(ELoggerLeave.error, message, ...args);
}
}
const logger = new Logger({ leave: 'debug' });
export default logger;