diff --git a/src/index.ts b/src/index.ts index 8ec8a2744..ab0ca1ce7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -25,9 +25,9 @@ import { Config } from './config/types'; import { lessThan } from './prelude/array'; import * as pkg from '../package.json'; -const logger = new Logger('core'); -const bootLogger = logger.createSubLogger('boot'); -const clusterLog = logger.createSubLogger('cluster'); +const logger = new Logger('core', 'cyan'); +const bootLogger = logger.createSubLogger('boot', 'magenta'); +const clusterLog = logger.createSubLogger('cluster', 'orange'); const ev = new Xev(); if (process.env.NODE_ENV != 'production' && process.env.DEBUG == null) { diff --git a/src/misc/logger.ts b/src/misc/logger.ts index 2ca79dd4b..bfdb48c64 100644 --- a/src/misc/logger.ts +++ b/src/misc/logger.ts @@ -3,24 +3,27 @@ import * as dateformat from 'dateformat'; export default class Logger { private domain: string; + private color?: string; private parentLogger: Logger; - constructor(domain: string) { + constructor(domain: string, color?: string) { this.domain = domain; + this.color = color; } - public createSubLogger(domain: string): Logger { - const logger = new Logger(domain); + public createSubLogger(domain: string, color?: string): Logger { + const logger = new Logger(domain, color); logger.parentLogger = this; return logger; } public log(level: string, message: string, important = false): void { + const domain = this.color ? chalk.keyword(this.color)(this.domain) : chalk.white(this.domain); if (this.parentLogger) { - this.parentLogger.log(level, `[${this.domain}]\t${message}`, important); + this.parentLogger.log(level, `[${domain}]\t${message}`, important); } else { const time = dateformat(new Date(), 'HH:MM:ss'); - const log = `${chalk.gray(time)} ${level} [${this.domain}]\t${message}`; + const log = `${chalk.gray(time)} ${level} [${domain}]\t${message}`; console.log(important ? chalk.bold(log) : log); } }