From 9ea5a1f6d1b46ba2af52b4bb9c5351325a8c961c Mon Sep 17 00:00:00 2001 From: Naomi Carrigan Date: Mon, 7 Jul 2025 16:30:50 -0700 Subject: [PATCH] feat: use our new logging server --- DOCS.md | 0 package.json | 1 + pnpm-lock.yaml | 8 ++++++++ prod.env | 1 + src/modules/validateEnv.ts | 2 +- src/utils/errorHandler.ts | 24 +++++------------------- src/utils/logHandler.ts | 21 +++++---------------- 7 files changed, 21 insertions(+), 36 deletions(-) delete mode 100644 DOCS.md diff --git a/DOCS.md b/DOCS.md deleted file mode 100644 index e69de29..0000000 diff --git a/package.json b/package.json index 65f8493..26d50f8 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "typescript": "5.4.5" }, "dependencies": { + "@nhcarrigan/logger": "1.0.0", "@octokit/rest": "20.1.1", "@prisma/client": "5.13.0", "discord.js": "14.15.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c8548e1..2f52262 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@nhcarrigan/logger': + specifier: 1.0.0 + version: 1.0.0 '@octokit/rest': specifier: 20.1.1 version: 20.1.1 @@ -167,6 +170,9 @@ packages: peerDependencies: eslint: '>=8' + '@nhcarrigan/logger@1.0.0': + resolution: {integrity: sha512-2e19Bie+ZKb6yKPKjhawqsENkhHatYkvBAmFZx9eToOXdOca+CYi51tldRMtejg6e0+4hOOf2bo5zdBQKmH0dw==} + '@nhcarrigan/prettier-config@3.2.0': resolution: {integrity: sha512-AZOzwDTZfRiEinjUmqRj4gqZLYpLANhN1iMIsESxeuln+/BjGI06pINQsePIZ/I2HoPd+HGjNqu0S+Os9nHzuw==} engines: {node: '20', pnpm: '8'} @@ -2398,6 +2404,8 @@ snapshots: - supports-color - typescript + '@nhcarrigan/logger@1.0.0': {} + '@nhcarrigan/prettier-config@3.2.0(prettier@3.2.5)': dependencies: prettier: 3.2.5 diff --git a/prod.env b/prod.env index 3aa703a..e80ca7a 100644 --- a/prod.env +++ b/prod.env @@ -11,3 +11,4 @@ GITHUB_WEBHOOK_SECRET="op://Environment Variables - Naomi/Mod Bot/github_webhook PATREON_WEBHOOK_SECRET="op://Environment Variables - Naomi/Mod Bot/patreon_webhook_secret" KOFI_WEBHOOK_SECRET="op://Environment Variables - Naomi/Mod Bot/kofi_webhook_secret" GITHUB_TOKEN="op://Environment Variables - Naomi/Mod Bot/github_pat" +LOG_TOKEN="op://Environment Variables - Naomi/Alert Server/api_auth" \ No newline at end of file diff --git a/src/modules/validateEnv.ts b/src/modules/validateEnv.ts index 6e6b0a0..c4b7d87 100644 --- a/src/modules/validateEnv.ts +++ b/src/modules/validateEnv.ts @@ -14,7 +14,7 @@ export const validateEnv = (): ExtendedClient["env"] => { !process.env.DEBUG_HOOK || !process.env.MONGO_URI ) { - logHandler.log("error", "MIssing environment variables!"); + logHandler.log("warn", "Missing environment variables!"); process.exit(1); } diff --git a/src/utils/errorHandler.ts b/src/utils/errorHandler.ts index e49b6ba..7d04534 100644 --- a/src/utils/errorHandler.ts +++ b/src/utils/errorHandler.ts @@ -13,29 +13,15 @@ import { logHandler } from "./logHandler"; * @returns {string} A unique ID to use in logs. */ export const errorHandler = async ( - bot: ExtendedClient, + _bot: ExtendedClient, context: string, err: unknown ) => { const id = SnowflakeUtil.generate(); const error = err as Error; - logHandler.log("error", `${context}: ${error.message}`); - logHandler.log("error", JSON.stringify(error.stack, null, 2)); - if (bot.env.debugHook) { - await bot.env.debugHook.send({ - content: `**${id}\n${context}: ${error.message}`, - avatarURL: - bot.user?.displayAvatarURL() ?? - "https://cdn.nhcarrigan.com/avatars/nhcarrigan.png", - username: bot.user?.username ?? "Mod bot" - }); - await bot.env.debugHook.send({ - content: "```\n" + JSON.stringify(error.stack, null, 2) + "\n```", - avatarURL: - bot.user?.displayAvatarURL() ?? - "https://cdn.nhcarrigan.com/avatars/nhcarrigan.png", - username: bot.user?.username ?? "Mod bot" - }); - } + void logHandler.error( + context, + error + ) return id; }; diff --git a/src/utils/logHandler.ts b/src/utils/logHandler.ts index e724c65..9df2456 100644 --- a/src/utils/logHandler.ts +++ b/src/utils/logHandler.ts @@ -1,6 +1,4 @@ -import { createLogger, format, transports, config } from "winston"; - -const { combine, timestamp, colorize, printf } = format; +import { Logger } from "@nhcarrigan/logger"; /** * Standard log handler, using winston to wrap and format @@ -9,16 +7,7 @@ const { combine, timestamp, colorize, printf } = format; * @param {string} level - The log level to use. * @param {string} message - The message to log. */ -export const logHandler = createLogger({ - levels: config.npm.levels, - level: "silly", - transports: [new transports.Console()], - format: combine( - timestamp({ - format: "YYYY-MM-DD HH:mm:ss" - }), - colorize(), - printf((info) => `${info.level}: ${[info.timestamp]}: ${info.message}`) - ), - exitOnError: false -}); +export const logHandler = new Logger( + "Celestine", + process.env.LOG_TOKEN ?? "" +)