-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlogger.js
More file actions
79 lines (71 loc) · 2.06 KB
/
Copy pathlogger.js
File metadata and controls
79 lines (71 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
class ConsoleLogger {
static DEBUG = 1;
static INFO = 2;
static WARN = 3;
static ERROR = 4;
static CRITICAL = 5;
static formatDate() {
return new Date().toISOString().replace("T", " ").replace("Z", "");
}
print(message) {
if (!message || message.trim().length === 0) {
throw new Error("Logging message must be non-empty.");
}
console.log(message);
}
log(type, message) {
if (!message || message.trim().length === 0) {
throw new Error("Logging message must be non-empty.");
}
let logType;
switch (type) {
case ConsoleLogger.DEBUG:
logType = "DEBUG";
break;
case ConsoleLogger.INFO:
logType = "INFO";
break;
case ConsoleLogger.WARN:
logType = "WARN";
break;
case ConsoleLogger.ERROR:
logType = "ERROR";
break;
case ConsoleLogger.CRITICAL:
logType = "CRITICAL";
break;
default:
throw new Error("Invalid log type");
}
console.log(`[${ConsoleLogger.formatDate()}][${logType}]: ${message}`);
}
}
class Application {
constructor(debugMode = false) {
this.logger = new ConsoleLogger();
this.debugMode = debugMode;
}
run() {
try {
this.logger.print("Application is starting...");
this.logger.log(ConsoleLogger.INFO, "System initialized successfully.");
this.logger.log(ConsoleLogger.DEBUG, "Debugging mode enabled.");
this.logger.log(ConsoleLogger.WARN, "Potential issue detected.");
this.logger.log(ConsoleLogger.ERROR, "An unexpected error occurred!");
this.logger.log(
ConsoleLogger.CRITICAL,
"System failure! Immediate action required."
);
if (this.debugMode) {
console.log("Running in debug mode...");
console.log("Logger instance:", this.logger);
}
// uncomment ro datesto exception handlingi
// this.logger.log(ConsoleLogger.INFO, "");
} catch (error) {
console.error("Exception caught:", error.message);
}
}
}
const app = new Application(true); // Enable debug mode
app.run();