@hg-ts/logger 0.1.2 → 0.1.4
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/.eslintcache +1 -1
- package/dist/base.formatter.d.ts +17 -0
- package/dist/base.formatter.d.ts.map +1 -0
- package/dist/base.formatter.js +43 -0
- package/dist/base.formatter.js.map +1 -0
- package/dist/base.logger.d.ts +25 -0
- package/dist/base.logger.d.ts.map +1 -0
- package/dist/base.logger.js +68 -0
- package/dist/base.logger.js.map +1 -0
- package/dist/console.logger.d.ts +4 -18
- package/dist/console.logger.d.ts.map +1 -1
- package/dist/console.logger.js +35 -104
- package/dist/console.logger.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/json.logger.d.ts +5 -0
- package/dist/json.logger.d.ts.map +1 -0
- package/dist/json.logger.js +18 -0
- package/dist/json.logger.js.map +1 -0
- package/dist-esm/base.formatter.d.ts +17 -0
- package/dist-esm/base.formatter.d.ts.map +1 -0
- package/dist-esm/base.formatter.js +38 -0
- package/dist-esm/base.formatter.js.map +1 -0
- package/dist-esm/base.logger.d.ts +25 -0
- package/dist-esm/base.logger.d.ts.map +1 -0
- package/dist-esm/base.logger.js +63 -0
- package/dist-esm/base.logger.js.map +1 -0
- package/dist-esm/console.logger.d.ts +4 -18
- package/dist-esm/console.logger.d.ts.map +1 -1
- package/dist-esm/console.logger.js +35 -104
- package/dist-esm/console.logger.js.map +1 -1
- package/dist-esm/index.d.ts +1 -0
- package/dist-esm/index.d.ts.map +1 -1
- package/dist-esm/index.js +1 -0
- package/dist-esm/index.js.map +1 -1
- package/dist-esm/json.logger.d.ts +5 -0
- package/dist-esm/json.logger.d.ts.map +1 -0
- package/dist-esm/json.logger.js +13 -0
- package/dist-esm/json.logger.js.map +1 -0
- package/package.json +5 -5
- package/src/base.formatter.ts +59 -0
- package/src/base.logger.ts +79 -0
- package/src/console.logger.ts +44 -123
- package/src/index.ts +1 -0
- package/src/json.logger.ts +18 -0
- package/dist/syslog.logger.d.ts +0 -20
- package/dist/syslog.logger.d.ts.map +0 -1
- package/dist/syslog.logger.js +0 -132
- package/dist/syslog.logger.js.map +0 -1
package/src/console.logger.ts
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
import { format } from 'node:util';
|
|
2
1
|
import winston from 'winston';
|
|
3
|
-
import { MESSAGE
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import { MESSAGE } from 'triple-beam';
|
|
3
|
+
import {
|
|
4
|
+
baseFormatter,
|
|
5
|
+
createFormatter,
|
|
6
|
+
LogMessage,
|
|
7
|
+
} from './base.formatter';
|
|
8
|
+
import {
|
|
9
|
+
BaseLogger,
|
|
10
|
+
LogLevel,
|
|
11
|
+
} from './base.logger';
|
|
6
12
|
import {
|
|
7
13
|
COLOR,
|
|
8
14
|
colorize,
|
|
9
15
|
} from './colors';
|
|
10
|
-
import { Logger } from './logger';
|
|
11
|
-
|
|
12
|
-
type LogLevel = keyof Omit<Logger, 'setContext'>;
|
|
13
16
|
|
|
14
|
-
const colorsMap = new Map<LogLevel, COLOR>()
|
|
17
|
+
export const colorsMap = new Map<LogLevel, COLOR>()
|
|
15
18
|
.set('emergency', COLOR.RED)
|
|
16
19
|
.set('alert', COLOR.RED)
|
|
17
20
|
.set('critical', COLOR.RED)
|
|
@@ -21,146 +24,64 @@ const colorsMap = new Map<LogLevel, COLOR>()
|
|
|
21
24
|
.set('info', COLOR.CYAN_BRIGHT)
|
|
22
25
|
.set('debug', COLOR.MAGENTA_BRIGHT);
|
|
23
26
|
|
|
24
|
-
|
|
25
|
-
.
|
|
26
|
-
.set('crit', 'critical');
|
|
27
|
+
function colorizeLevel(level: LogLevel): string {
|
|
28
|
+
const levelColor = colorsMap.get(level)!;
|
|
27
29
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
.set('critical', 'crit');
|
|
31
|
-
|
|
32
|
-
export const logLevelPriority: readonly LogLevel[] = [
|
|
33
|
-
'emergency',
|
|
34
|
-
'alert',
|
|
35
|
-
'critical',
|
|
36
|
-
'error',
|
|
37
|
-
'warning',
|
|
38
|
-
'notice',
|
|
39
|
-
'info',
|
|
40
|
-
'debug',
|
|
41
|
-
] as const;
|
|
42
|
-
|
|
43
|
-
const levelFormat = winston.format(info => {
|
|
44
|
-
info[LEVEL] = info.level;
|
|
45
|
-
const mappedLevel = syslogToLoggerMap.get(info[LEVEL]) ?? info[LEVEL];
|
|
46
|
-
const levelColor = colorsMap.get(mappedLevel as LogLevel)!;
|
|
47
|
-
|
|
48
|
-
info.level = `<${colorize(levelColor, mappedLevel)}>`;
|
|
49
|
-
|
|
50
|
-
return info;
|
|
51
|
-
});
|
|
30
|
+
return `<${colorize(levelColor, level)}>`;
|
|
31
|
+
}
|
|
52
32
|
|
|
53
|
-
|
|
54
|
-
if (
|
|
55
|
-
|
|
56
|
-
info['context'] = `[${info['context'] as string}]`;
|
|
33
|
+
function colorizeContext(context: Nullable<string>): string {
|
|
34
|
+
if (context) {
|
|
35
|
+
return `[${colorize(COLOR.ORANGE, context)}]`;
|
|
57
36
|
}
|
|
58
37
|
|
|
59
|
-
return
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
const colorizeFormat = winston.format(info => {
|
|
63
|
-
const mappedLevel = syslogToLoggerMap.get(info[LEVEL]!) ?? info[LEVEL];
|
|
64
|
-
const levelColor = colorsMap.get(mappedLevel as LogLevel)!;
|
|
38
|
+
return '';
|
|
39
|
+
}
|
|
65
40
|
|
|
66
|
-
|
|
41
|
+
function colorizeMessage(level: LogLevel, message: string): string {
|
|
42
|
+
const levelColor = colorsMap.get(level)!;
|
|
67
43
|
|
|
68
|
-
return
|
|
69
|
-
}
|
|
44
|
+
return colorize(levelColor, message);
|
|
45
|
+
}
|
|
70
46
|
|
|
71
|
-
|
|
72
|
-
if (process.title
|
|
73
|
-
|
|
74
|
-
} else {
|
|
75
|
-
info['process'] = `[${process.title}: ${process.pid}]`;
|
|
47
|
+
function formatProcess(process: LogMessage['process']): string {
|
|
48
|
+
if (process.title) {
|
|
49
|
+
return `[${process.title}: ${process.pid}]`;
|
|
76
50
|
}
|
|
77
|
-
return
|
|
78
|
-
}
|
|
51
|
+
return `[pid: ${process.pid}]`;
|
|
52
|
+
}
|
|
79
53
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
54
|
+
function formatTime(time: Date): string {
|
|
55
|
+
return time.toLocaleString('ru-RU');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const customFormat = createFormatter(info => {
|
|
59
|
+
const process = formatProcess(info.process);
|
|
60
|
+
const timestamp = formatTime(info.timestamp);
|
|
61
|
+
const context = colorizeContext(info.context);
|
|
62
|
+
const level = colorizeLevel(info.level);
|
|
63
|
+
const message = colorizeMessage(info.level, info.message);
|
|
84
64
|
|
|
85
|
-
const customFormat = winston.format(info => {
|
|
86
|
-
const { process, timestamp, context, level, [MESSAGE]: message } = info;
|
|
87
65
|
const metaInfoItems: string[] = [timestamp, context, level, process];
|
|
88
66
|
|
|
89
67
|
const metaInfo = metaInfoItems.join(' ');
|
|
90
68
|
|
|
91
|
-
info[MESSAGE] = `${metaInfo}: ${message
|
|
69
|
+
info[MESSAGE] = `${metaInfo}: ${message}`;
|
|
92
70
|
|
|
93
71
|
return info;
|
|
94
72
|
});
|
|
95
73
|
|
|
96
74
|
const consoleTransport = new winston.transports.Console({
|
|
97
75
|
format: winston.format.combine(
|
|
98
|
-
|
|
99
|
-
contextFormat(),
|
|
100
|
-
processInfoFormat(),
|
|
101
|
-
colorizeFormat(),
|
|
102
|
-
timeFormat(),
|
|
76
|
+
baseFormatter(),
|
|
103
77
|
customFormat(),
|
|
104
78
|
),
|
|
105
79
|
});
|
|
106
80
|
|
|
107
|
-
export class ConsoleLogger extends
|
|
108
|
-
protected context: Nullable<string> = null;
|
|
109
|
-
private readonly logger: winston.Logger;
|
|
110
|
-
|
|
81
|
+
export class ConsoleLogger extends BaseLogger {
|
|
111
82
|
public constructor() {
|
|
112
|
-
super();
|
|
113
|
-
|
|
114
|
-
const logLevel: LogLevel = 'debug';
|
|
115
|
-
this.context = 'test';
|
|
116
|
-
|
|
117
|
-
this.logger = winston.createLogger({
|
|
118
|
-
level: logLevel,
|
|
119
|
-
levels: winston.config.syslog.levels,
|
|
120
|
-
format: customFormat(),
|
|
121
|
-
transports: [consoleTransport],
|
|
122
|
-
handleExceptions: true,
|
|
123
|
-
handleRejections: true,
|
|
124
|
-
exitOnError: false,
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
public debug(...messages: unknown[]): void {
|
|
129
|
-
this.log('debug', messages);
|
|
130
|
-
}
|
|
131
|
-
public info(...messages: unknown[]): void {
|
|
132
|
-
this.log('info', messages);
|
|
133
|
-
}
|
|
134
|
-
public notice(...messages: unknown[]): void {
|
|
135
|
-
this.log('notice', messages);
|
|
136
|
-
}
|
|
137
|
-
public warning(...messages: unknown[]): void {
|
|
138
|
-
this.log('warning', messages);
|
|
139
|
-
}
|
|
140
|
-
public error(...messages: unknown[]): void {
|
|
141
|
-
this.log('error', messages);
|
|
142
|
-
}
|
|
143
|
-
public critical(...messages: unknown[]): void {
|
|
144
|
-
this.log('critical', messages);
|
|
145
|
-
}
|
|
146
|
-
public alert(...messages: unknown[]): void {
|
|
147
|
-
this.log('alert', messages);
|
|
148
|
-
}
|
|
149
|
-
public emergency(...messages: unknown[]): void {
|
|
150
|
-
this.log('emergency', messages);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
public setContext(context: Nullable<string>): void {
|
|
154
|
-
this.context = context;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
private log(level: LogLevel, messages: unknown[]): void {
|
|
158
|
-
const mappedLevel = loggerToSyslogMap.get(level) ?? level;
|
|
83
|
+
super('debug', 'test');
|
|
159
84
|
|
|
160
|
-
this.
|
|
161
|
-
level: mappedLevel,
|
|
162
|
-
message: format(...messages),
|
|
163
|
-
context: this.context,
|
|
164
|
-
});
|
|
85
|
+
this.addTransport(consoleTransport);
|
|
165
86
|
}
|
|
166
87
|
}
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import winston from 'winston';
|
|
2
|
+
import { baseFormatter } from './base.formatter';
|
|
3
|
+
import { BaseLogger } from './base.logger';
|
|
4
|
+
|
|
5
|
+
const jsonTransport = new winston.transports.Console({
|
|
6
|
+
format: winston.format.combine(
|
|
7
|
+
baseFormatter(),
|
|
8
|
+
winston.format.json(),
|
|
9
|
+
),
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
export class JSONLogger extends BaseLogger {
|
|
13
|
+
public constructor() {
|
|
14
|
+
super('debug', 'test');
|
|
15
|
+
|
|
16
|
+
this.addTransport(jsonTransport);
|
|
17
|
+
}
|
|
18
|
+
}
|
package/dist/syslog.logger.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Logger } from './logger';
|
|
2
|
-
declare type LogLevel = keyof Omit<Logger, 'setContext'>;
|
|
3
|
-
export declare const logLevelPriority: readonly LogLevel[];
|
|
4
|
-
export declare class SyslogLogger extends Logger {
|
|
5
|
-
protected context: Nullable<string>;
|
|
6
|
-
private readonly logger;
|
|
7
|
-
constructor();
|
|
8
|
-
debug(...messages: unknown[]): void;
|
|
9
|
-
info(...messages: unknown[]): void;
|
|
10
|
-
notice(...messages: unknown[]): void;
|
|
11
|
-
warning(...messages: unknown[]): void;
|
|
12
|
-
error(...messages: unknown[]): void;
|
|
13
|
-
critical(...messages: unknown[]): void;
|
|
14
|
-
alert(...messages: unknown[]): void;
|
|
15
|
-
emergency(...messages: unknown[]): void;
|
|
16
|
-
setContext(context: Nullable<string>): void;
|
|
17
|
-
private log;
|
|
18
|
-
}
|
|
19
|
-
export {};
|
|
20
|
-
//# sourceMappingURL=syslog.logger.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"syslog.logger.d.ts","sourceRoot":"","sources":["../src/syslog.logger.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,aAAK,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAoBjD,eAAO,MAAM,gBAAgB,EAAE,SAAS,QAAQ,EAStC,CAAC;AAkEX,qBAAa,YAAa,SAAQ,MAAM;IACvC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;;IAmBjC,KAAK,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAGnC,IAAI,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAGlC,MAAM,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAGpC,OAAO,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAGrC,KAAK,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAGnC,QAAQ,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAGtC,KAAK,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAGnC,SAAS,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAIvC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAIlD,OAAO,CAAC,GAAG;CASX"}
|
package/dist/syslog.logger.js
DELETED
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SyslogLogger = exports.logLevelPriority = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const node_util_1 = require("node:util");
|
|
6
|
-
const winston_1 = tslib_1.__importDefault(require("winston"));
|
|
7
|
-
const triple_beam_1 = require("triple-beam");
|
|
8
|
-
const colors_1 = require("./colors");
|
|
9
|
-
const logger_1 = require("./logger");
|
|
10
|
-
const colorsMap = new Map()
|
|
11
|
-
.set('emergency', colors_1.COLOR.RED)
|
|
12
|
-
.set('alert', colors_1.COLOR.RED)
|
|
13
|
-
.set('critical', colors_1.COLOR.RED)
|
|
14
|
-
.set('error', colors_1.COLOR.RED)
|
|
15
|
-
.set('warning', colors_1.COLOR.YELLOW)
|
|
16
|
-
.set('notice', colors_1.COLOR.GREEN)
|
|
17
|
-
.set('info', colors_1.COLOR.CYAN_BRIGHT)
|
|
18
|
-
.set('debug', colors_1.COLOR.MAGENTA_BRIGHT);
|
|
19
|
-
const syslogToLoggerMap = new Map()
|
|
20
|
-
.set('emerg', 'emergency')
|
|
21
|
-
.set('crit', 'critical');
|
|
22
|
-
const loggerToSyslogMap = new Map()
|
|
23
|
-
.set('emergency', 'emerg')
|
|
24
|
-
.set('critical', 'crit');
|
|
25
|
-
exports.logLevelPriority = [
|
|
26
|
-
'emergency',
|
|
27
|
-
'alert',
|
|
28
|
-
'critical',
|
|
29
|
-
'error',
|
|
30
|
-
'warning',
|
|
31
|
-
'notice',
|
|
32
|
-
'info',
|
|
33
|
-
'debug',
|
|
34
|
-
];
|
|
35
|
-
const levelFormat = winston_1.default.format(info => {
|
|
36
|
-
info[triple_beam_1.LEVEL] = info.level;
|
|
37
|
-
const mappedLevel = syslogToLoggerMap.get(info[triple_beam_1.LEVEL]) ?? info[triple_beam_1.LEVEL];
|
|
38
|
-
const levelColor = colorsMap.get(mappedLevel);
|
|
39
|
-
info.level = `<${(0, colors_1.colorize)(levelColor, mappedLevel)}>`;
|
|
40
|
-
return info;
|
|
41
|
-
});
|
|
42
|
-
const contextFormat = winston_1.default.format(info => {
|
|
43
|
-
if (info['context']) {
|
|
44
|
-
info['context'] = (0, colors_1.colorize)(colors_1.COLOR.ORANGE, info['context']);
|
|
45
|
-
info['context'] = `[${info['context']}]`;
|
|
46
|
-
}
|
|
47
|
-
return info;
|
|
48
|
-
});
|
|
49
|
-
const colorizeFormat = winston_1.default.format(info => {
|
|
50
|
-
const mappedLevel = syslogToLoggerMap.get(info[triple_beam_1.LEVEL]) ?? info[triple_beam_1.LEVEL];
|
|
51
|
-
const levelColor = colorsMap.get(mappedLevel);
|
|
52
|
-
info[triple_beam_1.MESSAGE] = (0, colors_1.colorize)(levelColor, info.message);
|
|
53
|
-
return info;
|
|
54
|
-
});
|
|
55
|
-
const processInfoFormat = winston_1.default.format(info => {
|
|
56
|
-
if (process.title.endsWith('node')) {
|
|
57
|
-
info['process'] = `[pid: ${process.pid}]`;
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
info['process'] = `[${process.title}: ${process.pid}]`;
|
|
61
|
-
}
|
|
62
|
-
return info;
|
|
63
|
-
});
|
|
64
|
-
const timeFormat = winston_1.default.format(info => {
|
|
65
|
-
info['timestamp'] = new Date().toLocaleString('ru-RU');
|
|
66
|
-
return info;
|
|
67
|
-
});
|
|
68
|
-
const customFormat = winston_1.default.format(info => {
|
|
69
|
-
const { process, timestamp, context, level, [triple_beam_1.MESSAGE]: message } = info;
|
|
70
|
-
const metaInfoItems = [timestamp, context, level, process];
|
|
71
|
-
const metaInfo = metaInfoItems.join(' ');
|
|
72
|
-
info[triple_beam_1.MESSAGE] = `${metaInfo}: ${message}`;
|
|
73
|
-
return info;
|
|
74
|
-
});
|
|
75
|
-
const consoleTransport = new winston_1.default.transports.Console({
|
|
76
|
-
format: winston_1.default.format.combine(levelFormat(), contextFormat(), processInfoFormat(), colorizeFormat(), timeFormat(), customFormat()),
|
|
77
|
-
});
|
|
78
|
-
class SyslogLogger extends logger_1.Logger {
|
|
79
|
-
context = null;
|
|
80
|
-
logger;
|
|
81
|
-
constructor() {
|
|
82
|
-
super();
|
|
83
|
-
const logLevel = 'debug';
|
|
84
|
-
this.context = 'test';
|
|
85
|
-
this.logger = winston_1.default.createLogger({
|
|
86
|
-
level: logLevel,
|
|
87
|
-
levels: winston_1.default.config.syslog.levels,
|
|
88
|
-
format: customFormat(),
|
|
89
|
-
transports: [consoleTransport],
|
|
90
|
-
handleExceptions: true,
|
|
91
|
-
handleRejections: true,
|
|
92
|
-
exitOnError: false,
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
debug(...messages) {
|
|
96
|
-
this.log('debug', messages);
|
|
97
|
-
}
|
|
98
|
-
info(...messages) {
|
|
99
|
-
this.log('info', messages);
|
|
100
|
-
}
|
|
101
|
-
notice(...messages) {
|
|
102
|
-
this.log('notice', messages);
|
|
103
|
-
}
|
|
104
|
-
warning(...messages) {
|
|
105
|
-
this.log('warning', messages);
|
|
106
|
-
}
|
|
107
|
-
error(...messages) {
|
|
108
|
-
this.log('error', messages);
|
|
109
|
-
}
|
|
110
|
-
critical(...messages) {
|
|
111
|
-
this.log('critical', messages);
|
|
112
|
-
}
|
|
113
|
-
alert(...messages) {
|
|
114
|
-
this.log('alert', messages);
|
|
115
|
-
}
|
|
116
|
-
emergency(...messages) {
|
|
117
|
-
this.log('emergency', messages);
|
|
118
|
-
}
|
|
119
|
-
setContext(context) {
|
|
120
|
-
this.context = context;
|
|
121
|
-
}
|
|
122
|
-
log(level, messages) {
|
|
123
|
-
const mappedLevel = loggerToSyslogMap.get(level) ?? level;
|
|
124
|
-
this.logger.log({
|
|
125
|
-
level: mappedLevel,
|
|
126
|
-
message: (0, node_util_1.format)(...messages),
|
|
127
|
-
context: this.context,
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
exports.SyslogLogger = SyslogLogger;
|
|
132
|
-
//# sourceMappingURL=syslog.logger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"syslog.logger.js","sourceRoot":"","sources":["../src/syslog.logger.ts"],"names":[],"mappings":"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"}
|