UNPKG

@vector-im/matrix-bot-sdk

Version:

TypeScript/JavaScript SDK for Matrix bots and appservices

71 lines (60 loc) 1.92 kB
import * as chalk from "chalk"; import { ILogger } from "./ILogger"; /* eslint-disable no-console */ /** * Prints to the console with colors and a format. * @category Logging */ export class RichConsoleLogger implements ILogger { protected chalkDebug = chalk.cyan; protected chalkInfo = chalk.green; protected chalkWarning = chalk.yellow; protected chalkError = chalk.bold.red; protected chalkTimestamp = chalk.grey; protected chalkModule = chalk.grey; protected getTimestamp(): string { const now = new Date(Date.now()).toUTCString(); return this.chalkTimestamp(now); } public trace(module: string, ...messageOrObject: any[]) { console.trace( this.getTimestamp(), this.chalkDebug("[TRACE]"), this.chalkModule(`[${module}]`), ...messageOrObject, ); } public debug(module: string, ...messageOrObject: any[]) { console.debug( this.getTimestamp(), this.chalkDebug("[DEBUG]"), this.chalkModule(`[${module}]`), ...messageOrObject, ); } public error(module: string, ...messageOrObject: any[]) { console.error( this.getTimestamp(), this.chalkError("[ERROR]"), this.chalkModule(`[${module}]`), ...messageOrObject, ); } public info(module: string, ...messageOrObject: any[]) { console.log( this.getTimestamp(), this.chalkInfo("[INFO]"), this.chalkModule(`[${module}]`), ...messageOrObject, ); } public warn(module: string, ...messageOrObject: any[]) { console.warn( this.getTimestamp(), this.chalkWarning("[WARN]"), this.chalkModule(`[${module}]`), ...messageOrObject, ); } } /* eslint-enable no-console */