From 8390dd9844322ff04ac8a8e33f3275388f480561 Mon Sep 17 00:00:00 2001 From: Lio Young Date: Mon, 5 Apr 2021 02:18:27 +0200 Subject: [PATCH] logging --- .gitignore | 3 +- index.ts | 9 ++++-- package-lock.json | 72 +++++++++++++++++++++++++++++++++++++++++++ package.json | 2 ++ src/events/message.ts | 10 +++--- src/utils/logger.ts | 51 +++++++++++++++++++++++++++++- 6 files changed, 139 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 3c64aa2..4f4750d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ config.ts node_modules/ -build/ \ No newline at end of file +build/ +logs/ \ No newline at end of file diff --git a/index.ts b/index.ts index 8d361ca..3553ca7 100644 --- a/index.ts +++ b/index.ts @@ -2,7 +2,12 @@ import config from "./config"; import client from "./src/handler/client/Client" import { Util } from "discord.js"; +import Logger from "./src/utils/logger"; Util.fetchRecommendedShards(config.token).then((count) => { - console.log(`Starting ${config.variables.name}`) + // console.log(`Starting ${config.variables.name}`) + Logger.info({ + message: `Starting ${config.variables.name}....`, + type: "event:start" + }) new client(config, count) -}) \ No newline at end of file +}) diff --git a/package-lock.json b/package-lock.json index 90e1f3e..d70d14e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,8 +10,10 @@ "dependencies": { "@supabase/supabase-js": "^1.7.7", "@thaldrin/sourcefinder": "^1.0.0", + "chalk": "^4.1.0", "discord.js": "^12.5.1", "winston": "^3.3.3", + "winston-daily-rotate-file": "^4.5.1", "yiff": "^3.0.2" }, "devDependencies": { @@ -390,6 +392,14 @@ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==" }, + "node_modules/file-stream-rotator": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.5.7.tgz", + "integrity": "sha512-VYb3HZ/GiAGUCrfeakO8Mp54YGswNUHvL7P09WQcXAJNSj3iQ5QraYSp3cIn1MUyw6uzfgN/EFOarCNa4JvUHQ==", + "dependencies": { + "moment": "^2.11.2" + } + }, "node_modules/filter-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", @@ -499,6 +509,14 @@ "node": ">= 0.6" } }, + "node_modules/moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "engines": { + "node": "*" + } + }, "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -527,6 +545,14 @@ "node-gyp-build-test": "build-test.js" } }, + "node_modules/object-hash": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.1.1.tgz", + "integrity": "sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ==", + "engines": { + "node": ">= 6" + } + }, "node_modules/one-time": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", @@ -738,6 +764,23 @@ "node": ">= 6.4.0" } }, + "node_modules/winston-daily-rotate-file": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-4.5.1.tgz", + "integrity": "sha512-Uv1KeBneTKFZ9R3J6SmI61vOoPEofxS+GZGEwYRPc7QFE1fpEz648eGWxLnOeo8CBrANwsd+GfK5DCd4Ab1xAQ==", + "dependencies": { + "file-stream-rotator": "^0.5.7", + "object-hash": "^2.0.1", + "triple-beam": "^1.3.0", + "winston-transport": "^4.4.0" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "winston": "^3" + } + }, "node_modules/winston-transport": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", @@ -1140,6 +1183,14 @@ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz", "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg==" }, + "file-stream-rotator": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.5.7.tgz", + "integrity": "sha512-VYb3HZ/GiAGUCrfeakO8Mp54YGswNUHvL7P09WQcXAJNSj3iQ5QraYSp3cIn1MUyw6uzfgN/EFOarCNa4JvUHQ==", + "requires": { + "moment": "^2.11.2" + } + }, "filter-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", @@ -1222,6 +1273,11 @@ "mime-db": "1.46.0" } }, + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -1242,6 +1298,11 @@ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" }, + "object-hash": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.1.1.tgz", + "integrity": "sha512-VOJmgmS+7wvXf8CjbQmimtCnEx3IAoLxI3fp2fbWehxrWBcAQFbk+vcwb6vzR0VZv/eNCJ/27j151ZTwqW/JeQ==" + }, "one-time": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", @@ -1408,6 +1469,17 @@ "winston-transport": "^4.4.0" } }, + "winston-daily-rotate-file": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-4.5.1.tgz", + "integrity": "sha512-Uv1KeBneTKFZ9R3J6SmI61vOoPEofxS+GZGEwYRPc7QFE1fpEz648eGWxLnOeo8CBrANwsd+GfK5DCd4Ab1xAQ==", + "requires": { + "file-stream-rotator": "^0.5.7", + "object-hash": "^2.0.1", + "triple-beam": "^1.3.0", + "winston-transport": "^4.4.0" + } + }, "winston-transport": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.4.0.tgz", diff --git a/package.json b/package.json index 72d840c..564e652 100644 --- a/package.json +++ b/package.json @@ -22,8 +22,10 @@ "dependencies": { "@supabase/supabase-js": "^1.7.7", "@thaldrin/sourcefinder": "^1.0.0", + "chalk": "^4.1.0", "discord.js": "^12.5.1", "winston": "^3.3.3", + "winston-daily-rotate-file": "^4.5.1", "yiff": "^3.0.2" }, "devDependencies": { diff --git a/src/events/message.ts b/src/events/message.ts index f45a599..f1af8e0 100644 --- a/src/events/message.ts +++ b/src/events/message.ts @@ -1,4 +1,5 @@ import { Client, Collection, Message } from "discord.js"; +import Logger from "../utils/logger"; import supabase from "../utils/database"; import { Server } from "../utils/types"; @@ -7,16 +8,17 @@ export = { run: async (client: Client, message: Message) => { if (message.author.bot) return if (message.channel.type === "dm") return - - // @ts-ignore let { data, error } = await supabase.from("servers").select().eq(`server_id`, message.guild.id) if (data?.length === 0) await supabase.from("servers").insert({ server_id: message.guild?.id - }) - + Logger.info({ + type: `event:command`, + command: "Test", + message: ` `, + }) // console.log(message.guild?.name, data) } diff --git a/src/utils/logger.ts b/src/utils/logger.ts index 126ad33..1759469 100644 --- a/src/utils/logger.ts +++ b/src/utils/logger.ts @@ -1,9 +1,58 @@ import Winston from "winston"; +import "winston-daily-rotate-file" import config from "../../config"; +import chalk from 'chalk' + +let transport = new Winston.transports.DailyRotateFile({ + filename: './logs/thaldrin.%DATE%.log', + datePattern: 'DD-MM-YYYY', + zippedArchive: true, + // maxSize: '20m', + maxFiles: '14d', +}); +let errortransport = new Winston.transports.DailyRotateFile({ + filename: './logs/thaldrin.error.%DATE%.log', + datePattern: 'DD-MM-YYYY', + zippedArchive: true, + // maxSize: '20m', + maxFiles: '14d', + level: "error" +}); +const colors: { [k: string]: any } = { + info: chalk.blueBright, + error: chalk.redBright, + warn: chalk.yellowBright, + debug: chalk.magentaBright +} const Logger = Winston.createLogger({ + format: Winston.format.simple(), - + transports: [ + new Winston.transports.File({ filename: "./logs/thaldrin.log" }), + new Winston.transports.File({ filename: "./logs/thaldrin.error.log", level: "error" }), + transport, errortransport, + new Winston.transports.Console({ + format: Winston.format.combine( + Winston.format.timestamp({ format: "HH:mm DD-MM-YYYY" }), + Winston.format.printf(info => { + let color = colors[info.level] + let timestamp = chalk.gray(`[${info.timestamp}]`) + let type = chalk.magenta.underline(`[${info.type}]`) + let level = color(info.level.toUpperCase()) + // const message = `| ${info.message}` + let message: string + if (info.message === ` `) { + message = " " + } else { + message = `| ${info.message}` + } + let command = info.command + return `${timestamp} ${level} ${type} ${command ? chalk.yellow(command) : ""} ${message}` + }) + ) + }), + ] })