zario 0.2.11 → 0.3.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/README.md +10 -1
- package/dist/cjs/core/CustomLogLevel.js +2 -0
- package/dist/cjs/core/Formatter.js +75 -0
- package/dist/cjs/core/LogLevel.js +2 -0
- package/dist/cjs/core/Logger.js +234 -0
- package/dist/cjs/index.js +19 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/transports/ConsoleTransport.js +39 -0
- package/dist/cjs/transports/FileTransport.js +260 -0
- package/dist/cjs/transports/HttpTransport.js +150 -0
- package/dist/cjs/transports/Transport.js +2 -0
- package/dist/cjs/transports/index.js +20 -0
- package/dist/cjs/utils/ColorUtil.js +42 -0
- package/dist/cjs/utils/TimeUtil.js +26 -0
- package/dist/cjs/utils/Timerutil.js +22 -0
- package/dist/{core → esm/core}/CustomLogLevel.d.ts +1 -1
- package/dist/esm/core/CustomLogLevel.js +1 -0
- package/dist/{core → esm/core}/Formatter.d.ts +1 -1
- package/dist/esm/core/Formatter.js +71 -0
- package/dist/esm/core/LogLevel.js +1 -0
- package/dist/{core → esm/core}/Logger.d.ts +4 -5
- package/dist/esm/core/Logger.js +230 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.js +13 -0
- package/dist/{transports → esm/transports}/ConsoleTransport.d.ts +3 -3
- package/dist/esm/transports/ConsoleTransport.js +35 -0
- package/dist/{transports → esm/transports}/FileTransport.d.ts +7 -5
- package/dist/esm/transports/FileTransport.js +223 -0
- package/dist/{transports → esm/transports}/HttpTransport.d.ts +3 -3
- package/dist/esm/transports/HttpTransport.js +113 -0
- package/dist/{transports → esm/transports}/Transport.d.ts +2 -2
- package/dist/esm/transports/Transport.js +1 -0
- package/dist/esm/transports/index.d.ts +4 -0
- package/dist/esm/transports/index.js +4 -0
- package/dist/esm/utils/ColorUtil.js +38 -0
- package/dist/esm/utils/TimeUtil.js +22 -0
- package/dist/esm/utils/Timerutil.js +18 -0
- package/package.json +19 -8
- package/dist/index.d.ts +0 -8
- package/dist/index.js +0 -3
- package/dist/index.mjs +0 -3
- package/dist/transports/index.d.ts +0 -28
- /package/dist/{core → esm/core}/LogLevel.d.ts +0 -0
- /package/dist/{utils → esm/utils}/ColorUtil.d.ts +0 -0
- /package/dist/{utils → esm/utils}/TimeUtil.d.ts +0 -0
- /package/dist/{utils → esm/utils}/Timerutil.d.ts +0 -0
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
A minimal, fast logging library for Node.js with TypeScript support.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## What's New in 0.2.11
|
|
6
6
|
|
|
7
7
|
- Added HTTP transport support with new HttpTransport class
|
|
8
8
|
- Added log batching functionality for efficient writes
|
|
@@ -61,6 +61,7 @@ logger.error("❌ Database connection failed", { code: 500 });
|
|
|
61
61
|
### Transports
|
|
62
62
|
|
|
63
63
|
#### Console Transport
|
|
64
|
+
|
|
64
65
|
```js
|
|
65
66
|
import { Logger, ConsoleTransport } from "zario";
|
|
66
67
|
|
|
@@ -72,6 +73,7 @@ const logger = new Logger({
|
|
|
72
73
|
```
|
|
73
74
|
|
|
74
75
|
#### File Transport
|
|
76
|
+
|
|
75
77
|
```js
|
|
76
78
|
import { Logger, FileTransport } from "zario";
|
|
77
79
|
|
|
@@ -90,6 +92,7 @@ const logger = new Logger({
|
|
|
90
92
|
```
|
|
91
93
|
|
|
92
94
|
#### HTTP Transport
|
|
95
|
+
|
|
93
96
|
```js
|
|
94
97
|
import { Logger, HttpTransport } from "zario";
|
|
95
98
|
|
|
@@ -115,6 +118,7 @@ const logger = new Logger({
|
|
|
115
118
|
- `logger.info(message, metadata?)` - Info level logging
|
|
116
119
|
- `logger.warn(message, metadata?)` - Warning level logging
|
|
117
120
|
- `logger.error(message, metadata?)` - Error level logging
|
|
121
|
+
- `logger.logWithLevel(level, message, metadata?)` - Log a message at an arbitrary/custom level
|
|
118
122
|
- `logger.createChild(options)` - Creates a child logger with inherited settings
|
|
119
123
|
- `logger.setLevel(level)` - Change the logger level at runtime
|
|
120
124
|
- `logger.setFormat(format)` - Set the output format to text or json
|
|
@@ -122,6 +126,7 @@ const logger = new Logger({
|
|
|
122
126
|
## Usage Examples
|
|
123
127
|
|
|
124
128
|
### Basic Usage
|
|
129
|
+
|
|
125
130
|
```js
|
|
126
131
|
import { Logger, ConsoleTransport } from "zario";
|
|
127
132
|
|
|
@@ -136,11 +141,13 @@ logger.error("Something went wrong", { userId: 123 });
|
|
|
136
141
|
```
|
|
137
142
|
|
|
138
143
|
### JSON Format
|
|
144
|
+
|
|
139
145
|
```js
|
|
140
146
|
const logger = new Logger({ json: true });
|
|
141
147
|
```
|
|
142
148
|
|
|
143
149
|
### Custom Levels & Colors
|
|
150
|
+
|
|
144
151
|
```js
|
|
145
152
|
import { Logger, ConsoleTransport } from "zario";
|
|
146
153
|
|
|
@@ -168,6 +175,7 @@ logger.logWithLevel('critical', 'This is a critical message in bright red');
|
|
|
168
175
|
```
|
|
169
176
|
|
|
170
177
|
### Child Loggers
|
|
178
|
+
|
|
171
179
|
```js
|
|
172
180
|
const main = new Logger({ prefix: "[APP]" });
|
|
173
181
|
const db = main.createChild({ prefix: "[DB]" });
|
|
@@ -177,6 +185,7 @@ db.error("Connection timeout");
|
|
|
177
185
|
```
|
|
178
186
|
|
|
179
187
|
### Multiple Transports
|
|
188
|
+
|
|
180
189
|
```js
|
|
181
190
|
import { Logger, ConsoleTransport, FileTransport } from "zario";
|
|
182
191
|
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Formatter = void 0;
|
|
4
|
+
const TimeUtil_js_1 = require("../utils/TimeUtil.js");
|
|
5
|
+
const ColorUtil_js_1 = require("../utils/ColorUtil.js");
|
|
6
|
+
class Formatter {
|
|
7
|
+
constructor(options = {}) {
|
|
8
|
+
const { colorize = true, json = false, timestampFormat = "YYYY-MM-DD HH:mm:ss", timestamp = false, customColors = {}, } = options;
|
|
9
|
+
this.colorize = colorize;
|
|
10
|
+
this.json = json;
|
|
11
|
+
this.timestampFormat = timestampFormat;
|
|
12
|
+
this.timestamp = timestamp;
|
|
13
|
+
this.customColors = customColors;
|
|
14
|
+
}
|
|
15
|
+
format(data) {
|
|
16
|
+
if (this.json) {
|
|
17
|
+
return this.formatAsJson(data);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return this.formatAsText(data);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
formatAsJson(data) {
|
|
24
|
+
const formattedData = {
|
|
25
|
+
...data.metadata, // Spread first so core fields can override
|
|
26
|
+
level: data.level,
|
|
27
|
+
message: data.message,
|
|
28
|
+
};
|
|
29
|
+
if (this.timestamp) {
|
|
30
|
+
formattedData.timestamp = data.timestamp.toISOString();
|
|
31
|
+
}
|
|
32
|
+
if (data.prefix) {
|
|
33
|
+
formattedData.prefix = data.prefix;
|
|
34
|
+
}
|
|
35
|
+
return JSON.stringify(formattedData);
|
|
36
|
+
}
|
|
37
|
+
formatAsText(data) {
|
|
38
|
+
let output = "";
|
|
39
|
+
if (this.timestamp) {
|
|
40
|
+
output += `[${TimeUtil_js_1.TimeUtil.format(data.timestamp, this.timestampFormat)}] `;
|
|
41
|
+
}
|
|
42
|
+
if (data.prefix) {
|
|
43
|
+
output += `${data.prefix} `;
|
|
44
|
+
}
|
|
45
|
+
let level = data.level.toUpperCase();
|
|
46
|
+
if (this.colorize) {
|
|
47
|
+
const color = this.customColors[data.level] || data.level;
|
|
48
|
+
level = ColorUtil_js_1.ColorUtil.colorize(level, color);
|
|
49
|
+
}
|
|
50
|
+
output += `[${level}] ${data.message}`;
|
|
51
|
+
if (data.metadata) {
|
|
52
|
+
output += ` ${JSON.stringify(data.metadata)}`;
|
|
53
|
+
}
|
|
54
|
+
return output;
|
|
55
|
+
}
|
|
56
|
+
setJson(json) {
|
|
57
|
+
this.json = json;
|
|
58
|
+
}
|
|
59
|
+
isColorized() {
|
|
60
|
+
return this.colorize;
|
|
61
|
+
}
|
|
62
|
+
isJson() {
|
|
63
|
+
return this.json;
|
|
64
|
+
}
|
|
65
|
+
getTimestampFormat() {
|
|
66
|
+
return this.timestampFormat;
|
|
67
|
+
}
|
|
68
|
+
hasTimestamp() {
|
|
69
|
+
return this.timestamp;
|
|
70
|
+
}
|
|
71
|
+
getCustomColors() {
|
|
72
|
+
return { ...this.customColors };
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.Formatter = Formatter;
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Logger = void 0;
|
|
4
|
+
const Formatter_js_1 = require("./Formatter.js");
|
|
5
|
+
const ConsoleTransport_js_1 = require("../transports/ConsoleTransport.js");
|
|
6
|
+
class Logger {
|
|
7
|
+
constructor(options = {}) {
|
|
8
|
+
this.transports = [];
|
|
9
|
+
const { level, colorize, json, transports = [], timestampFormat = "YYYY-MM-DD HH:mm:ss", prefix, timestamp, context = {}, parent, asyncMode, customLevels = {}, customColors = {}, } = options;
|
|
10
|
+
this.parent = parent; // Set parent
|
|
11
|
+
this.context = { ...context }; // Init context
|
|
12
|
+
this.customLevels = customLevels; // custom log store
|
|
13
|
+
this.asyncMode = false;
|
|
14
|
+
if (this.parent) {
|
|
15
|
+
this.level = level ?? this.parent.level;
|
|
16
|
+
this.prefix = prefix ?? this.parent.prefix;
|
|
17
|
+
this.timestamp = timestamp ?? this.parent.timestamp;
|
|
18
|
+
this.asyncMode = asyncMode ?? this.parent.asyncMode;
|
|
19
|
+
this.transports =
|
|
20
|
+
transports && transports.length > 0
|
|
21
|
+
? this.initTransports(transports)
|
|
22
|
+
: this.parent.transports;
|
|
23
|
+
// Merge colors; child overrides parent
|
|
24
|
+
const mergedCColors = {
|
|
25
|
+
...this.parent.formatter.getCustomColors(),
|
|
26
|
+
...customColors,
|
|
27
|
+
};
|
|
28
|
+
this.formatter = new Formatter_js_1.Formatter({
|
|
29
|
+
colorize: this.getDefaultColorizeValue(colorize) ??
|
|
30
|
+
this.parent.formatter.isColorized(),
|
|
31
|
+
json: json ?? this.parent.formatter.isJson(),
|
|
32
|
+
timestampFormat: timestampFormat ?? this.parent.formatter.getTimestampFormat(),
|
|
33
|
+
timestamp: timestamp ?? this.parent.formatter.hasTimestamp(),
|
|
34
|
+
customColors: mergedCColors,
|
|
35
|
+
});
|
|
36
|
+
this.context = { ...this.parent.context, ...this.context };
|
|
37
|
+
// Merge custom levels with parent's custom levels
|
|
38
|
+
this.customLevels = { ...this.parent.customLevels, ...customLevels };
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// Auto-configure based on environment
|
|
42
|
+
const isProd = this.isProductionEnvironment();
|
|
43
|
+
this.level = level ?? this.getDefaultLevel(isProd);
|
|
44
|
+
this.prefix = prefix ?? "";
|
|
45
|
+
this.timestamp = timestamp ?? this.getDefaultTimestamp(isProd);
|
|
46
|
+
const defaultTransports = transports && transports.length > 0
|
|
47
|
+
? transports
|
|
48
|
+
: this.getDefaultTransports(isProd);
|
|
49
|
+
this.asyncMode = asyncMode ?? this.getDefaultAsyncMode(isProd);
|
|
50
|
+
this.transports = this.initTransports(defaultTransports);
|
|
51
|
+
this.formatter = new Formatter_js_1.Formatter({
|
|
52
|
+
colorize: this.getDefaultColorizeValue(colorize),
|
|
53
|
+
json: json ?? this.getDefaultJson(isProd),
|
|
54
|
+
timestampFormat,
|
|
55
|
+
timestamp: this.getDefaultTimestamp(isProd),
|
|
56
|
+
customColors,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
if (!Logger._global) {
|
|
60
|
+
Logger._global = this;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
isProductionEnvironment() {
|
|
64
|
+
const env = process.env.NODE_ENV?.toLowerCase();
|
|
65
|
+
return env === "production" || env === "prod";
|
|
66
|
+
}
|
|
67
|
+
getDefaultLevel(isProd) {
|
|
68
|
+
return isProd ? "warn" : "debug";
|
|
69
|
+
}
|
|
70
|
+
getDefaultColorizeValue(colorize) {
|
|
71
|
+
if (colorize !== undefined) {
|
|
72
|
+
return colorize;
|
|
73
|
+
}
|
|
74
|
+
const isProd = this.isProductionEnvironment();
|
|
75
|
+
return !isProd;
|
|
76
|
+
}
|
|
77
|
+
getDefaultJson(isProd) {
|
|
78
|
+
return isProd;
|
|
79
|
+
}
|
|
80
|
+
getDefaultTimestamp(isProd) {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
getDefaultTransports(isProd) {
|
|
84
|
+
if (Logger.defaultTransportsFactory) {
|
|
85
|
+
return Logger.defaultTransportsFactory(isProd);
|
|
86
|
+
}
|
|
87
|
+
return [new ConsoleTransport_js_1.ConsoleTransport()];
|
|
88
|
+
}
|
|
89
|
+
getDefaultAsyncMode(isProd) {
|
|
90
|
+
return isProd;
|
|
91
|
+
}
|
|
92
|
+
initTransports(transportConfigs) {
|
|
93
|
+
const initializedTransports = [];
|
|
94
|
+
for (const transportConfig of transportConfigs) {
|
|
95
|
+
if (this.isTransport(transportConfig)) {
|
|
96
|
+
initializedTransports.push(transportConfig);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return initializedTransports;
|
|
100
|
+
}
|
|
101
|
+
isTransport(transport) {
|
|
102
|
+
return (typeof transport === "object" &&
|
|
103
|
+
transport !== null &&
|
|
104
|
+
typeof transport.write === "function");
|
|
105
|
+
}
|
|
106
|
+
shouldLog(level) {
|
|
107
|
+
// Get the priority of the current logger level
|
|
108
|
+
const currentLevelPriority = this.getLevelPriority(this.level);
|
|
109
|
+
// Get the priority of the message level
|
|
110
|
+
const messageLevelPriority = this.getLevelPriority(level);
|
|
111
|
+
return messageLevelPriority >= currentLevelPriority;
|
|
112
|
+
}
|
|
113
|
+
getLevelPriority(level) {
|
|
114
|
+
// use a static map to avoid repeated allocations
|
|
115
|
+
if (Logger.LEVEL_PRIORITIES.hasOwnProperty(level)) {
|
|
116
|
+
return Logger.LEVEL_PRIORITIES[level];
|
|
117
|
+
}
|
|
118
|
+
// Check if it's a custom level
|
|
119
|
+
if (this.customLevels && level in this.customLevels) {
|
|
120
|
+
const customPriority = this.customLevels[level];
|
|
121
|
+
return customPriority !== undefined ? customPriority : 999;
|
|
122
|
+
}
|
|
123
|
+
return 999;
|
|
124
|
+
}
|
|
125
|
+
log(level, message, metadata) {
|
|
126
|
+
if (!this.shouldLog(level) || level === "silent") {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const timestamp = new Date();
|
|
130
|
+
// Optimize metadata merging
|
|
131
|
+
let finalMetadata;
|
|
132
|
+
const hasContext = this.context && Object.keys(this.context).length > 0;
|
|
133
|
+
if (hasContext && metadata) {
|
|
134
|
+
finalMetadata = { ...this.context, ...metadata };
|
|
135
|
+
}
|
|
136
|
+
else if (hasContext) {
|
|
137
|
+
finalMetadata = this.context;
|
|
138
|
+
}
|
|
139
|
+
else if (metadata) {
|
|
140
|
+
finalMetadata = metadata;
|
|
141
|
+
}
|
|
142
|
+
// Only add metadata if it's not empty after merging
|
|
143
|
+
const logData = {
|
|
144
|
+
level,
|
|
145
|
+
message,
|
|
146
|
+
timestamp,
|
|
147
|
+
metadata: finalMetadata && Object.keys(finalMetadata).length > 0
|
|
148
|
+
? finalMetadata
|
|
149
|
+
: undefined,
|
|
150
|
+
prefix: this.prefix,
|
|
151
|
+
};
|
|
152
|
+
if (this.asyncMode) {
|
|
153
|
+
for (const transport of this.transports) {
|
|
154
|
+
if (transport.writeAsync) {
|
|
155
|
+
transport.writeAsync(logData, this.formatter).catch((error) => {
|
|
156
|
+
console.error("Error during async logging:", error);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
setImmediate(() => {
|
|
161
|
+
transport.write(logData, this.formatter);
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
for (const transport of this.transports) {
|
|
168
|
+
transport.write(logData, this.formatter);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
debug(message, metadata) {
|
|
173
|
+
this.log("debug", message, metadata);
|
|
174
|
+
}
|
|
175
|
+
info(message, metadata) {
|
|
176
|
+
this.log("info", message, metadata);
|
|
177
|
+
}
|
|
178
|
+
warn(message, metadata) {
|
|
179
|
+
this.log("warn", message, metadata);
|
|
180
|
+
}
|
|
181
|
+
error(message, metadata) {
|
|
182
|
+
this.log("error", message, metadata);
|
|
183
|
+
}
|
|
184
|
+
silent(message, metadata) {
|
|
185
|
+
this.log("silent", message, metadata);
|
|
186
|
+
}
|
|
187
|
+
boring(message, metadata) {
|
|
188
|
+
this.log("boring", message, metadata);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Generic log method that allows logging with custom levels
|
|
192
|
+
*/
|
|
193
|
+
logWithLevel(level, message, metadata) {
|
|
194
|
+
this.log(level, message, metadata);
|
|
195
|
+
}
|
|
196
|
+
setLevel(level) {
|
|
197
|
+
this.level = level;
|
|
198
|
+
}
|
|
199
|
+
setFormat(format) {
|
|
200
|
+
this.formatter.setJson(format === "json");
|
|
201
|
+
}
|
|
202
|
+
setAsyncMode(asyncMode) {
|
|
203
|
+
this.asyncMode = asyncMode;
|
|
204
|
+
}
|
|
205
|
+
addTransport(transport) {
|
|
206
|
+
this.transports.push(transport);
|
|
207
|
+
}
|
|
208
|
+
getTimestampSetting() {
|
|
209
|
+
return this.timestamp;
|
|
210
|
+
}
|
|
211
|
+
static get global() {
|
|
212
|
+
if (!Logger._global) {
|
|
213
|
+
Logger._global = new Logger();
|
|
214
|
+
}
|
|
215
|
+
return Logger._global;
|
|
216
|
+
}
|
|
217
|
+
createChild(options = {}) {
|
|
218
|
+
return new Logger({ ...options, parent: this });
|
|
219
|
+
}
|
|
220
|
+
startTimer(name) {
|
|
221
|
+
const { Timer } = require("../utils/Timerutil");
|
|
222
|
+
return new Timer(name, (message) => this.info(message));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
exports.Logger = Logger;
|
|
226
|
+
Logger.defaultTransportsFactory = null;
|
|
227
|
+
Logger.LEVEL_PRIORITIES = {
|
|
228
|
+
silent: 0,
|
|
229
|
+
boring: 1,
|
|
230
|
+
debug: 2,
|
|
231
|
+
info: 3,
|
|
232
|
+
warn: 4,
|
|
233
|
+
error: 5,
|
|
234
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpTransport = exports.FileTransport = exports.ConsoleTransport = exports.Logger = void 0;
|
|
4
|
+
const Logger_js_1 = require("./core/Logger.js");
|
|
5
|
+
Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return Logger_js_1.Logger; } });
|
|
6
|
+
const index_js_1 = require("./transports/index.js");
|
|
7
|
+
Object.defineProperty(exports, "ConsoleTransport", { enumerable: true, get: function () { return index_js_1.ConsoleTransport; } });
|
|
8
|
+
Object.defineProperty(exports, "FileTransport", { enumerable: true, get: function () { return index_js_1.FileTransport; } });
|
|
9
|
+
Object.defineProperty(exports, "HttpTransport", { enumerable: true, get: function () { return index_js_1.HttpTransport; } });
|
|
10
|
+
// Configure default transports to maintain backward compatibility
|
|
11
|
+
Logger_js_1.Logger.defaultTransportsFactory = (isProd) => {
|
|
12
|
+
if (isProd) {
|
|
13
|
+
return [new index_js_1.ConsoleTransport(), new index_js_1.FileTransport({ path: "./logs/app.log" })];
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
return [new index_js_1.ConsoleTransport()];
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
exports.default = Logger_js_1.Logger;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConsoleTransport = void 0;
|
|
4
|
+
class ConsoleTransport {
|
|
5
|
+
constructor(options = {}) {
|
|
6
|
+
const { colorize = true } = options;
|
|
7
|
+
this.colorize = colorize;
|
|
8
|
+
}
|
|
9
|
+
write(data, formatter) {
|
|
10
|
+
// Toggle colorize temporarily, then restore it
|
|
11
|
+
const originalColorizeSetting = formatter["colorize"];
|
|
12
|
+
if (this.colorize !== originalColorizeSetting) {
|
|
13
|
+
formatter["colorize"] = this.colorize;
|
|
14
|
+
}
|
|
15
|
+
const output = formatter.format(data);
|
|
16
|
+
// Restore
|
|
17
|
+
if (this.colorize !== originalColorizeSetting) {
|
|
18
|
+
formatter["colorize"] = originalColorizeSetting;
|
|
19
|
+
}
|
|
20
|
+
switch (data.level) {
|
|
21
|
+
case "error":
|
|
22
|
+
console.error(output);
|
|
23
|
+
break;
|
|
24
|
+
case "warn":
|
|
25
|
+
console.warn(output);
|
|
26
|
+
break;
|
|
27
|
+
default:
|
|
28
|
+
console.log(output);
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async writeAsync(data, formatter) {
|
|
33
|
+
setImmediate(() => {
|
|
34
|
+
this.write(data, formatter);
|
|
35
|
+
});
|
|
36
|
+
return Promise.resolve();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.ConsoleTransport = ConsoleTransport;
|