@rabbit-company/logger 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -3
- package/src/logger.js +135 -0
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rabbit-company/logger",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "Simple logger",
|
|
5
|
-
"main": "./
|
|
5
|
+
"main": "./src/logger.js",
|
|
6
|
+
"browser": "./module/logger.js",
|
|
6
7
|
"type": "module",
|
|
7
8
|
"homepage": "https://github.com/Rabbit-Company/Logger-JS",
|
|
8
9
|
"funding": "https://rabbit-company.com/donation",
|
|
@@ -13,7 +14,8 @@
|
|
|
13
14
|
"build": "rabbit-builder"
|
|
14
15
|
},
|
|
15
16
|
"files": [
|
|
16
|
-
"module/logger.js"
|
|
17
|
+
"module/logger.js",
|
|
18
|
+
"src/logger.js"
|
|
17
19
|
],
|
|
18
20
|
"repository": {
|
|
19
21
|
"type": "git",
|
package/src/logger.js
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
|
|
3
|
+
export default class Logger{
|
|
4
|
+
|
|
5
|
+
static #NDJson = '';
|
|
6
|
+
static NDJson = false;
|
|
7
|
+
|
|
8
|
+
static level = 2;
|
|
9
|
+
static colors = true;
|
|
10
|
+
|
|
11
|
+
static levels = {
|
|
12
|
+
error: 0,
|
|
13
|
+
warn: 1,
|
|
14
|
+
info: 2,
|
|
15
|
+
http: 3,
|
|
16
|
+
verbose: 4,
|
|
17
|
+
debug: 5,
|
|
18
|
+
silly: 6
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
static #levels = {
|
|
22
|
+
0: 'ERROR',
|
|
23
|
+
1: 'WARN',
|
|
24
|
+
2: 'INFO',
|
|
25
|
+
3: 'HTTP',
|
|
26
|
+
4: 'VERBOSE',
|
|
27
|
+
5: 'DEBUG',
|
|
28
|
+
6: 'SILLY'
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
static parseMessage(message){
|
|
32
|
+
if(typeof(message) === 'undefined') return null;
|
|
33
|
+
if(typeof(message) === 'object') message = JSON.stringify(message);
|
|
34
|
+
return message;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
static formatMessage(message, logLevel){
|
|
38
|
+
let type = this.#levels[logLevel];
|
|
39
|
+
let date = new Date().toISOString().split('.')[0].replace('T', ' ');
|
|
40
|
+
|
|
41
|
+
if(this.colors){
|
|
42
|
+
date = chalk.gray(date);
|
|
43
|
+
|
|
44
|
+
switch(logLevel){
|
|
45
|
+
case 0:
|
|
46
|
+
type = chalk.bold(chalk.red(type));
|
|
47
|
+
message = chalk.red(message);
|
|
48
|
+
break;
|
|
49
|
+
case 1:
|
|
50
|
+
type = chalk.bold(chalk.yellow(type));
|
|
51
|
+
message = chalk.yellow(message);
|
|
52
|
+
break;
|
|
53
|
+
case 2:
|
|
54
|
+
type = chalk.bold(chalk.cyan(type));
|
|
55
|
+
message = chalk.cyan(message);
|
|
56
|
+
break;
|
|
57
|
+
case 3:
|
|
58
|
+
type = chalk.bold(chalk.blue(type));
|
|
59
|
+
message = chalk.blue(message);
|
|
60
|
+
break;
|
|
61
|
+
case 4:
|
|
62
|
+
type = chalk.bold(chalk.blue(type));
|
|
63
|
+
message = chalk.blue(message);
|
|
64
|
+
break;
|
|
65
|
+
case 5:
|
|
66
|
+
type = chalk.bold(chalk.gray(type));
|
|
67
|
+
message = chalk.gray(message);
|
|
68
|
+
break;
|
|
69
|
+
case 6:
|
|
70
|
+
type = chalk.bold(chalk.gray(type));
|
|
71
|
+
message = chalk.gray(message);
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return `[${date}] ${type} ${message}`;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
static #processMessage(message, level){
|
|
80
|
+
if(this.level < level) return;
|
|
81
|
+
message = this.parseMessage(message);
|
|
82
|
+
if(message === null) return;
|
|
83
|
+
if(this.NDJson) this.putNDJson(message, level);
|
|
84
|
+
|
|
85
|
+
switch(level){
|
|
86
|
+
case 0:
|
|
87
|
+
console.error(this.formatMessage(message, level));
|
|
88
|
+
break;
|
|
89
|
+
case 1:
|
|
90
|
+
console.warn(this.formatMessage(message, level));
|
|
91
|
+
break;
|
|
92
|
+
default:
|
|
93
|
+
console.info(this.formatMessage(message, level));
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
static error(message){
|
|
99
|
+
this.#processMessage(message, 0);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
static warn(message){
|
|
103
|
+
this.#processMessage(message, 1);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
static info(message){
|
|
107
|
+
this.#processMessage(message, 2);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
static http(message){
|
|
111
|
+
this.#processMessage(message, 3);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
static verbose(message){
|
|
115
|
+
this.#processMessage(message, 4);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
static debug(message){
|
|
119
|
+
this.#processMessage(message, 5);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
static silly(message){
|
|
123
|
+
this.#processMessage(message, 6);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
static putNDJson(message, logLevel){
|
|
127
|
+
let separator = (this.#NDJson.length !== 0) ? '\n' : '';
|
|
128
|
+
this.#NDJson += separator + JSON.stringify({ 'time': new Date().toISOString(), 'level': logLevel, 'msg': message });
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
static getNDJson(){
|
|
132
|
+
return this.#NDJson;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
}
|