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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 77 by rakin, Mon Jul 29 17:28:30 2024 UTC revision 372 by rakin, Mon Jul 29 17:29:50 2024 UTC
# Line 1  Line 1 
1  import DiscordClient from "../client/Client";  import { MessageEmbed, WebhookClient } from "discord.js";
 import { Guild } from "discord.js";  
2  import { appendFile } from "fs/promises";  import { appendFile } from "fs/promises";
3    import path from "path";
4    import Service from "../utils/structures/Service";
5    import { splitMessage } from "../utils/util";
6    
7  export enum LogLevel {  export enum LogLevel {
8      LOG = 'log',      LOG = 'log',
# Line 10  export enum LogLevel { Line 12  export enum LogLevel {
12      ERROR = 'error'      ERROR = 'error'
13  }  }
14    
15  export default class DebugLogger {  export default class DebugLogger extends Service {
16      private joinLeaveLogFile = __dirname + '/../../logs/join-leave.log';      private joinLeaveLogFile = path.join(process.env.SUDO_PREFIX ?? (__dirname + '/../../'), 'logs/join-leave.log');
17      private appLogFile = __dirname + '/../../logs/app.log';      private appLogFile = path.join(process.env.SUDO_PREFIX ?? (__dirname + '/../../'), 'logs/app.log');
18        
     constructor(protected client: DiscordClient) {  
           
     }  
   
19      async logApp(level: LogLevel, message: string) {      async logApp(level: LogLevel, message: string) {
20          await this.log(this.appLogFile, level, message);          await this.log(this.appLogFile, level, message);
21      }      }
# Line 29  export default class DebugLogger { Line 27  export default class DebugLogger {
27      async log(stream: string, level: LogLevel, message: string) {      async log(stream: string, level: LogLevel, message: string) {
28          await appendFile(stream, `[${new Date().toISOString()}] [${level}] ${message}\n`);          await appendFile(stream, `[${new Date().toISOString()}] [${level}] ${message}\n`);
29      }      }
30    
31        async logToHomeServer(message: string, logLevel: LogLevel = LogLevel.ERROR) {
32            if (!process.env.DEBUG_WEKHOOK_URL)
33                return;
34            
35            const webhookClient = new WebhookClient({ url: process.env.DEBUG_WEKHOOK_URL! });
36            const splitted = splitMessage(message);
37            const embed = new MessageEmbed({
38                color: logLevel === LogLevel.WARN ? 'GOLD' : 0xf14a60,
39                title: logLevel === LogLevel.WARN ? 'Core Warning' : 'Fatal Error',
40                description: splitted.shift(),
41            });
42    
43            if (splitted.length === 0) {
44                embed.setTimestamp();
45            }
46    
47            try {
48                await webhookClient.send({
49                    embeds: [
50                        embed
51                    ]
52                });
53    
54                for (const index in splitted) {
55                    const embed = new MessageEmbed({
56                        color: logLevel === LogLevel.WARN ? 'GOLD' : 0xf14a60,
57                        description: splitted[index],
58                    });
59    
60                    if (parseInt(index) === (splitted.length - 1)) {
61                        embed.setTimestamp();
62                    }
63    
64                    await webhookClient.send({
65                        embeds: [
66                            embed
67                        ]
68                    });
69                }
70    
71                await webhookClient.destroy();
72            }
73            catch (e) {
74                console.log(e);
75            }
76        }
77  }  }

Legend:
Removed from v.77  
changed lines
  Added in v.372

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26