68 lines
2.5 KiB
TypeScript
68 lines
2.5 KiB
TypeScript
import chalk from "chalk";
|
|
|
|
class Logging {
|
|
|
|
visible: boolean
|
|
source: string
|
|
|
|
/**
|
|
* @param {string} source Module identifier. Used in every line to identify the module that sent the message.
|
|
* @param {boolean} silent Set to false to log a message when the logger instantiates. Useful for debugging.
|
|
* @returns A source for logging messages to the console. Functions for info, warnings, errors, debug statements, and network events are provided and have shorthands.
|
|
*/
|
|
constructor(source: string, silent?: boolean) {
|
|
this.visible = true;
|
|
this.source = source;
|
|
if (typeof silent == 'boolean' && !silent) this.info(`Instantiated module logging`);
|
|
}
|
|
|
|
log(type: MessageType, ...msgs: string[]) {
|
|
if (type == MessageType.Info) this.i(...msgs);
|
|
if (type == MessageType.Warn) this.w(...msgs);
|
|
if (type == MessageType.Error) this.e(...msgs);
|
|
if (type == MessageType.Debug) this.d(...msgs);
|
|
if (type == MessageType.Network) this.n(...msgs);
|
|
}
|
|
|
|
i(...msgs: string[]) {this.info(...msgs);}
|
|
info(...msgs: string[]) {
|
|
if (this.visible !== true) return;
|
|
console.log(chalk.gray(`${new Date().toISOString()} `) + chalk.bgWhite.black(`${this.source} [INFO]`) + chalk.whiteBright(' ' + msgs.join(' ')));
|
|
}
|
|
|
|
w(...msgs: string[]) {this.warn(...msgs);}
|
|
warn(...msgs: string[]) {
|
|
if (this.visible !== true) return;
|
|
console.warn(chalk.gray(`${new Date().toISOString()} `) + chalk.bgYellow.black(`${this.source} [WARN]`) + chalk.yellowBright(' ' + msgs.join(' ')));
|
|
}
|
|
|
|
e(...msgs: string[]) {this.error(...msgs);}
|
|
error(...msgs: string[]) {
|
|
if (this.visible !== true) return;
|
|
console.error(chalk.gray(`${new Date().toISOString()} `) + chalk.bgRed.black(`${this.source} [ERROR]`) + chalk.redBright(' ' + msgs.join(' ')));
|
|
}
|
|
|
|
d(...msgs: string[]) {this.debug(...msgs);}
|
|
debug(...msgs: string[]) {
|
|
if (this.visible !== true) return;
|
|
console.debug(chalk.gray(`${new Date().toISOString()} `) + chalk.bgGreen.black(`${this.source} [DEBUG]`) + chalk.greenBright(' ' + msgs.join(' ')));
|
|
}
|
|
|
|
n(...msgs: string[]) {this.network(...msgs);}
|
|
network(...msgs: string[]) {
|
|
if (this.visible !== true) return;
|
|
console.log(chalk.gray(`${new Date().toISOString()} `) + chalk.bgCyan.black(`${this.source} [NETWORK]`) + chalk.cyanBright(' ' + msgs.join(' ')));
|
|
}
|
|
|
|
}
|
|
|
|
enum MessageType {
|
|
Info,
|
|
Warn,
|
|
Error,
|
|
Debug,
|
|
Network
|
|
}
|
|
|
|
export { MessageType };
|
|
export default Logging; |