Add skeleton for file event handling
This commit is contained in:
parent
1420cf104e
commit
8a7cc65e88
6 changed files with 259 additions and 4 deletions
68
plugin/src/logger.ts
Normal file
68
plugin/src/logger.ts
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
enum LogLevel {
|
||||
INFO,
|
||||
WARNING,
|
||||
ERROR,
|
||||
}
|
||||
|
||||
class LogLine {
|
||||
constructor(public level: LogLevel, public message: string) {}
|
||||
|
||||
public toString(): string {
|
||||
return `${this.formatLevel()}: ${this.message}`;
|
||||
}
|
||||
|
||||
private formatLevel(): string {
|
||||
switch (this.level) {
|
||||
case LogLevel.INFO:
|
||||
return "INFO";
|
||||
case LogLevel.WARNING:
|
||||
return "WARNING";
|
||||
case LogLevel.ERROR:
|
||||
return "ERROR";
|
||||
default:
|
||||
return "UNKNOWN";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export class Logger {
|
||||
private static readonly MAX_MESSAGES = 1000;
|
||||
|
||||
private static instance: Logger;
|
||||
private messages: LogLine[] = [];
|
||||
|
||||
private constructor() {}
|
||||
|
||||
static getInstance(): Logger {
|
||||
if (!Logger.instance) {
|
||||
Logger.instance = new Logger();
|
||||
}
|
||||
return Logger.instance;
|
||||
}
|
||||
|
||||
public info(message: string): void {
|
||||
this.pushMessage(message, LogLevel.INFO);
|
||||
console.log(message);
|
||||
}
|
||||
|
||||
public warn(message: string): void {
|
||||
this.pushMessage(message, LogLevel.WARNING);
|
||||
console.warn(message);
|
||||
}
|
||||
|
||||
public error(message: string): void {
|
||||
this.pushMessage(message, LogLevel.ERROR);
|
||||
console.error(message);
|
||||
}
|
||||
|
||||
public getMessages(): LogLine[] {
|
||||
return this.messages;
|
||||
}
|
||||
|
||||
private pushMessage(message: string, level: LogLevel): void {
|
||||
this.messages.push(new LogLine(level, message));
|
||||
if (this.messages.length > Logger.MAX_MESSAGES) {
|
||||
this.messages.shift();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue