main logger

This commit is contained in:
Erik 2020-04-12 15:34:35 +03:00
parent c5d6e0c545
commit 7735a9fc98

View File

@ -1,23 +1,58 @@
const winston = require('winston');
const { createLogger, format, transports, config } = require('winston');
const { combine, label, printf } = format;
const moment = require('moment');
const chalk = require('chalk');
class Logger {
constructor(manager) {
this.manager = manager;
this.logger = winston.createLogger({
this.logger = createLogger({
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: `logs/${this.date}.log` }),
new winston.transports.File({ filename: `logs/${this.date}-error.log`, level: 'error' })
new transports.Console(),
new transports.File({ filename: `logs/${this.date.replace(/ /g, '-')}.log` }),
new transports.File({ filename: `logs/${this.date.replace(/ /g, '-')}-error.log`, level: 'error' })
]
});
this.client
.on('shardCreate', (shard) => this.write(shard, "Shard created.", 'DEBUG'))
.on('message', (shard, message) => this._handleMessage(shard, message));
}
//Messages coming from the shards process.send functions.
async _handleMessage(shard, message) {
if(message._ready
|| message._disconnect
|| message._reconnecting
|| message._sFetchProp
|| message._sEval
|| message._sRespawnAll) return undefined; //Properties used for discord.js internal sharding, must filter for.
}
//The MAIN function for writing everything to the logger.
async write(shard, string = '', type = 'silly') {
if(!config.npm.levels[type]) return undefined;
const header = `[${this.date}][shard-${this._shardId(shard)}]`;
//[04/02/2020 12:52:20][shard-00]
this.logger.log(type, string)
}
_shardId(shard) {
const id = shard.id;
return `${id}`.length === 1 ? `0${id}` : `${id}`;
}
get date() {
return moment().format("MM-DD-YYYY-hh:mm:ss");
return moment().format("MM-DD-YYYY hh:mm:ss");
}
}