-
Notifications
You must be signed in to change notification settings - Fork 0
/
QuickLogger.js
101 lines (87 loc) · 2.83 KB
/
QuickLogger.js
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
const fs = require('fs');
const Semaphore = require('semaphore');
const colors = require('colors');
class QuickLogger
{
static semaphore = null;
constructor(filepath, coloration)
{
this.filepath = filepath === '' ? 'QuickLogger.txt' : filepath;
this.coloration = coloration
if(QuickLogger.semaphore === null)
QuickLogger.semaphore = Semaphore(1);
}
#write(type, data)
{
let line = `${this.#getDate()} ${type} ${data}\n`;
if(this.coloration)
{
switch(type)
{
case "[INFO]":
line = colors.white(line)
break;
case "[WARNING]":
line = colors.yellow(line)
break;
case "[ERROR]":
line = colors.red(line);
break;
default:
line = colors.white(line)
break;
}
}
QuickLogger.semaphore.take(() => {
fs.appendFile(this.filepath, line, (err) => {
/*if (err)
console.error("Une erreur est survenue lors de l'écriture du fichier : ", err);
else
console.log('Le fichier a été écrit avec succès.');*/
QuickLogger.semaphore.leave();
});
});
}
writeInfo(data)
{
this.#write(QuickLogger.INFO, data);
}
writeWarning(data)
{
this.#write(QuickLogger.WARNING, data);
}
writeError(data)
{
this.#write(QuickLogger.ERROR, data);
}
erase()
{
QuickLogger.semaphore.take(() => {
fs.truncate(this.filepath, 0, (err) => {
/*if (err)
console.error('Erreur lors de la suppression du contenu du fichier : ', err);
else
console.log('Le contenu du fichier a été supprimé avec succès.');*/
QuickLogger.semaphore.leave();
});
});
}
#getDate()
{
const now = new Date();
const day = now.getDate().toString().padStart(2, '0');
const month = (now.getMonth() + 1).toString().padStart(2, '0');
const year = now.getFullYear().toString().substring(2);
const hours = now.getHours().toString().padStart(2, '0');
const minutes = now.getMinutes().toString().padStart(2, '0');
const seconds = now.getSeconds().toString().padStart(2, '0');
const formattedDate = `${day}/${month}/${year} ${hours}h${minutes}m${seconds}s`;
return formattedDate;
}
}
QuickLogger.INFO = '[INFO]';
QuickLogger.WARNING = '[WARNING]';
QuickLogger.ERROR = '[ERROR]';
module.exports = function(filepath, coloration) {
return new QuickLogger(filepath, coloration);
};