/[sudobot]/trunk/src/services/DebugLogger.ts
ViewVC logotype

Annotation of /trunk/src/services/DebugLogger.ts

Parent Directory Parent Directory | Revision Log Revision Log


Revision 344 - (hide annotations)
Mon Jul 29 17:29:40 2024 UTC (8 months, 1 week ago) by rakin
File MIME type: application/typescript
File size: 2285 byte(s)
chore: eslint autofix
1 rakin 344 import { MessageEmbed, WebhookClient } from "discord.js";
2 rakin 77 import { appendFile } from "fs/promises";
3 rakin 226 import Service from "../utils/structures/Service";
4 rakin 237 import { splitMessage } from "../utils/util";
5 rakin 77
6     export enum LogLevel {
7     LOG = 'log',
8     INFO = 'info',
9     WARN = 'warn',
10     CRITICAL = 'critical',
11     ERROR = 'error'
12     }
13    
14 rakin 226 export default class DebugLogger extends Service {
15 rakin 77 private joinLeaveLogFile = __dirname + '/../../logs/join-leave.log';
16     private appLogFile = __dirname + '/../../logs/app.log';
17 rakin 226
18 rakin 77 async logApp(level: LogLevel, message: string) {
19     await this.log(this.appLogFile, level, message);
20     }
21    
22     async logLeaveJoin(level: LogLevel, message: string) {
23     await this.log(this.joinLeaveLogFile, level, message);
24     }
25    
26     async log(stream: string, level: LogLevel, message: string) {
27     await appendFile(stream, `[${new Date().toISOString()}] [${level}] ${message}\n`);
28     }
29 rakin 237
30     async logToHomeServer(message: string, logLevel: LogLevel = LogLevel.ERROR) {
31     if (!process.env.DEBUG_WEKHOOK_URL)
32     return;
33    
34     const webhookClient = new WebhookClient({ url: process.env.DEBUG_WEKHOOK_URL! });
35     const splitted = splitMessage(message);
36     const embed = new MessageEmbed({
37     color: logLevel === LogLevel.WARN ? 'GOLD' : 0xf14a60,
38     title: logLevel === LogLevel.WARN ? 'Core Warning' : 'Fatal Error',
39     description: splitted.shift(),
40     });
41    
42     if (splitted.length === 0) {
43     embed.setTimestamp();
44     }
45    
46     try {
47     await webhookClient.send({
48     embeds: [
49     embed
50     ]
51     });
52    
53     for (const index in splitted) {
54     const embed = new MessageEmbed({
55     color: logLevel === LogLevel.WARN ? 'GOLD' : 0xf14a60,
56     description: splitted[index],
57     });
58    
59     if (parseInt(index) === (splitted.length - 1)) {
60     embed.setTimestamp();
61     }
62    
63     await webhookClient.send({
64     embeds: [
65     embed
66     ]
67     });
68     }
69     }
70     catch (e) {
71     console.log(e);
72     }
73     }
74 rakin 77 }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26