@rife/logger 0.0.5-beta.20 → 0.0.5-beta.22
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/dist/env.d.ts +1 -1
- package/dist/env.js +3 -3
- package/dist/pino.js +30 -48
- package/dist/test.js +2 -13
- package/dist/trace.d.ts +1 -0
- package/dist/trace.js +5 -1
- package/package.json +3 -2
- package/src/env.ts +2 -1
- package/src/pino.ts +38 -47
- package/src/test.ts +2 -13
- package/src/trace.ts +4 -0
- package/tsconfig.json +1 -1
package/dist/env.d.ts
CHANGED
package/dist/env.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const isDev = () => process.env.NODE_ENV === 'development';
|
|
5
|
-
exports.isDev = isDev;
|
|
3
|
+
exports.isDev = exports.isProd = void 0;
|
|
6
4
|
const isProd = () => process.env.NODE_ENV === 'production';
|
|
7
5
|
exports.isProd = isProd;
|
|
6
|
+
const isDev = () => !(0, exports.isProd)();
|
|
7
|
+
exports.isDev = isDev;
|
package/dist/pino.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createLogger = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const pino_1 = tslib_1.__importDefault(require("pino"));
|
|
6
|
-
// https://github.com/pinojs/pino/blob/master/docs/api.md
|
|
7
|
-
const trace_1 = require("./trace");
|
|
8
6
|
const env_1 = require("./env");
|
|
9
7
|
function getPinoConfig() {
|
|
10
8
|
const targets = [];
|
|
@@ -15,63 +13,47 @@ function getPinoConfig() {
|
|
|
15
13
|
options: {},
|
|
16
14
|
});
|
|
17
15
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
});
|
|
24
|
-
}
|
|
16
|
+
targets.push({
|
|
17
|
+
level: 'debug',
|
|
18
|
+
target: 'pino/file',
|
|
19
|
+
options: { destination: './.logs/1.log', mkdir: true },
|
|
20
|
+
});
|
|
25
21
|
const config = {
|
|
26
|
-
base: { pid: undefined, hostname: undefined },
|
|
22
|
+
// base: { pid: undefined, hostname: undefined },
|
|
27
23
|
transport: { targets },
|
|
28
24
|
};
|
|
29
25
|
return config;
|
|
30
26
|
}
|
|
27
|
+
const startTime = Symbol('startTime');
|
|
31
28
|
function createLogger(options) {
|
|
32
29
|
let data = {};
|
|
33
30
|
const logger = (0, pino_1.default)({
|
|
34
31
|
...getPinoConfig(),
|
|
35
32
|
mixin() {
|
|
36
|
-
return {
|
|
33
|
+
return { ...data };
|
|
37
34
|
},
|
|
38
35
|
});
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
36
|
+
const express = () => {
|
|
37
|
+
const { mapHttpRequest, mapHttpResponse } = require('pino-std-serializers');
|
|
38
|
+
return (req, res, next) => {
|
|
39
|
+
const response = res;
|
|
40
|
+
response[startTime] = response[startTime] || Date.now();
|
|
41
|
+
const traceId = req.headers['trace-id'];
|
|
42
|
+
const onComplete = () => {
|
|
43
|
+
res.removeListener('close', onComplete);
|
|
44
|
+
res.removeListener('finish', onComplete);
|
|
45
|
+
res.removeListener('error', onComplete);
|
|
46
|
+
const duration = Date.now() - response[startTime];
|
|
47
|
+
logger.info({ traceId, duration, request: mapHttpRequest(req).req, response: mapHttpResponse(res).res });
|
|
48
|
+
};
|
|
49
|
+
res.on('close', onComplete);
|
|
50
|
+
res.on('finish', onComplete);
|
|
51
|
+
res.on('error', onComplete);
|
|
52
|
+
next();
|
|
53
|
+
};
|
|
47
54
|
};
|
|
55
|
+
const instance = logger;
|
|
56
|
+
instance.express = express;
|
|
57
|
+
return instance;
|
|
48
58
|
}
|
|
49
59
|
exports.createLogger = createLogger;
|
|
50
|
-
function createHttpLogger() {
|
|
51
|
-
const { pinoHttp } = require('pino-http');
|
|
52
|
-
const logger = pinoHttp({
|
|
53
|
-
...getPinoConfig(),
|
|
54
|
-
mixin() {
|
|
55
|
-
return { traceId: (0, trace_1.getTraceId)() };
|
|
56
|
-
},
|
|
57
|
-
genReqId: trace_1.getTraceId,
|
|
58
|
-
customAttributeKeys: {
|
|
59
|
-
req: 'request',
|
|
60
|
-
res: 'response',
|
|
61
|
-
responseTime: 'duration',
|
|
62
|
-
},
|
|
63
|
-
serializers: {
|
|
64
|
-
req(req) {
|
|
65
|
-
// console.log('==========req.raw.body', req.raw.body);
|
|
66
|
-
req.body = req.raw.body;
|
|
67
|
-
return req;
|
|
68
|
-
},
|
|
69
|
-
res(res) {
|
|
70
|
-
// console.log('==========req.raw.body', res.raw.);
|
|
71
|
-
return res;
|
|
72
|
-
},
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
return logger;
|
|
76
|
-
}
|
|
77
|
-
exports.createHttpLogger = createHttpLogger;
|
package/dist/test.js
CHANGED
|
@@ -17,19 +17,8 @@ process.env.NODE_ENV = 'development';
|
|
|
17
17
|
const pino_1 = require("./pino");
|
|
18
18
|
const trace_1 = require("./trace");
|
|
19
19
|
const logger = (0, pino_1.createLogger)();
|
|
20
|
-
logger.
|
|
21
|
-
logger.warn({ data: { a: 2 } });
|
|
20
|
+
logger.warn({ data: { a: 2 } }, '123');
|
|
22
21
|
const e = new Error('123');
|
|
23
|
-
logger.error(e, '123');
|
|
24
22
|
(0, trace_1.runInTrace)(() => {
|
|
25
|
-
logger.
|
|
26
|
-
logger.info('123');
|
|
27
|
-
logger.info('123');
|
|
28
|
-
logger.info('123');
|
|
29
|
-
logger.info('123');
|
|
30
|
-
logger.info('123');
|
|
31
|
-
logger.info('123');
|
|
32
|
-
logger.info('123');
|
|
33
|
-
logger.info('123');
|
|
34
|
-
logger.info('123');
|
|
23
|
+
logger.error(e, '123');
|
|
35
24
|
});
|
package/dist/trace.d.ts
CHANGED
package/dist/trace.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getTraceId = exports.runInTrace = exports.getNewTraceId = void 0;
|
|
3
|
+
exports.setTraceId = exports.getTraceId = exports.runInTrace = exports.getNewTraceId = void 0;
|
|
4
4
|
const async_hooks_1 = require("async_hooks");
|
|
5
5
|
const nanoid_1 = require("nanoid");
|
|
6
6
|
const als = new async_hooks_1.AsyncLocalStorage();
|
|
@@ -14,3 +14,7 @@ function getTraceId() {
|
|
|
14
14
|
return als.getStore()?.traceId;
|
|
15
15
|
}
|
|
16
16
|
exports.getTraceId = getTraceId;
|
|
17
|
+
function setTraceId() {
|
|
18
|
+
return als.getStore()?.traceId;
|
|
19
|
+
}
|
|
20
|
+
exports.setTraceId = setTraceId;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rife/logger",
|
|
3
|
-
"version": "0.0.5-beta.
|
|
3
|
+
"version": "0.0.5-beta.22",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./src/index.ts",
|
|
@@ -30,10 +30,11 @@
|
|
|
30
30
|
"pino": "^8.16.1",
|
|
31
31
|
"pino-http": "^8.5.1",
|
|
32
32
|
"pino-pretty": "^10.2.3",
|
|
33
|
+
"pino-std-serializers": "^6.2.2",
|
|
33
34
|
"safe-stable-stringify": "^2.4.3",
|
|
34
35
|
"winston": "^3.9.0",
|
|
35
36
|
"winston-daily-rotate-file": "^4.7.1",
|
|
36
|
-
"@rife/config": "0.0.5-beta.
|
|
37
|
+
"@rife/config": "0.0.5-beta.22"
|
|
37
38
|
},
|
|
38
39
|
"scripts": {
|
|
39
40
|
"dev": "infra dev",
|
package/src/env.ts
CHANGED
package/src/pino.ts
CHANGED
|
@@ -2,9 +2,10 @@ import pino from 'pino';
|
|
|
2
2
|
// https://github.com/pinojs/pino/blob/master/docs/api.md
|
|
3
3
|
|
|
4
4
|
import { getTraceId } from './trace';
|
|
5
|
-
import { isDev
|
|
5
|
+
import { isDev } from './env';
|
|
6
6
|
|
|
7
7
|
export interface ILogger {
|
|
8
|
+
debug: pino.LogFn;
|
|
8
9
|
info: pino.LogFn;
|
|
9
10
|
warn: pino.LogFn;
|
|
10
11
|
error: pino.LogFn;
|
|
@@ -26,69 +27,59 @@ function getPinoConfig() {
|
|
|
26
27
|
});
|
|
27
28
|
}
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
30
|
+
targets.push({
|
|
31
|
+
level: 'debug',
|
|
32
|
+
target: 'pino/file',
|
|
33
|
+
options: { destination: './.logs/1.log', mkdir: true },
|
|
34
|
+
});
|
|
35
|
+
|
|
36
36
|
const config: pino.LoggerOptions = {
|
|
37
|
-
base: { pid: undefined, hostname: undefined },
|
|
37
|
+
// base: { pid: undefined, hostname: undefined },
|
|
38
38
|
transport: { targets },
|
|
39
39
|
};
|
|
40
40
|
|
|
41
41
|
return config;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
const startTime = Symbol('startTime');
|
|
45
|
+
|
|
46
|
+
export function createLogger(options?: ILogger.Options) {
|
|
45
47
|
let data: any = {};
|
|
46
48
|
|
|
47
49
|
const logger = pino({
|
|
48
50
|
...getPinoConfig(),
|
|
49
51
|
mixin() {
|
|
50
|
-
return {
|
|
52
|
+
return { ...data };
|
|
51
53
|
},
|
|
52
54
|
});
|
|
53
55
|
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
};
|
|
56
|
+
const express = () => {
|
|
57
|
+
const { mapHttpRequest, mapHttpResponse } = require('pino-std-serializers') as typeof import('pino-std-serializers');
|
|
57
58
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
setData,
|
|
63
|
-
};
|
|
64
|
-
}
|
|
59
|
+
return (req: any, res: any, next: any) => {
|
|
60
|
+
const response: any = res;
|
|
61
|
+
response[startTime] = response[startTime] || Date.now();
|
|
62
|
+
const traceId = req.headers['trace-id'];
|
|
65
63
|
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
const onComplete = () => {
|
|
65
|
+
res.removeListener('close', onComplete);
|
|
66
|
+
res.removeListener('finish', onComplete);
|
|
67
|
+
res.removeListener('error', onComplete);
|
|
68
|
+
const duration = Date.now() - response[startTime];
|
|
68
69
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
// console.log('==========req.raw.body', req.raw.body);
|
|
83
|
-
req.body = req.raw.body;
|
|
84
|
-
return req;
|
|
85
|
-
},
|
|
86
|
-
res(res) {
|
|
87
|
-
// console.log('==========req.raw.body', res.raw.);
|
|
88
|
-
return res;
|
|
89
|
-
},
|
|
90
|
-
},
|
|
91
|
-
});
|
|
70
|
+
logger.info({ traceId, duration, request: mapHttpRequest(req).req, response: mapHttpResponse(res).res });
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
res.on('close', onComplete);
|
|
74
|
+
res.on('finish', onComplete);
|
|
75
|
+
res.on('error', onComplete);
|
|
76
|
+
|
|
77
|
+
next();
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
const instance = logger as typeof logger & { express: typeof express };
|
|
81
|
+
|
|
82
|
+
instance.express = express;
|
|
92
83
|
|
|
93
|
-
return
|
|
84
|
+
return instance;
|
|
94
85
|
}
|
package/src/test.ts
CHANGED
|
@@ -20,21 +20,10 @@ import { createLogger } from './pino';
|
|
|
20
20
|
import { runInTrace } from './trace';
|
|
21
21
|
|
|
22
22
|
const logger = createLogger();
|
|
23
|
-
logger.
|
|
24
|
-
logger.warn({ data: { a: 2 } });
|
|
23
|
+
logger.warn({ data: { a: 2 } }, '123');
|
|
25
24
|
|
|
26
25
|
const e = new Error('123');
|
|
27
|
-
logger.error(e, '123');
|
|
28
26
|
|
|
29
27
|
runInTrace(() => {
|
|
30
|
-
logger.
|
|
31
|
-
logger.info('123');
|
|
32
|
-
logger.info('123');
|
|
33
|
-
logger.info('123');
|
|
34
|
-
logger.info('123');
|
|
35
|
-
logger.info('123');
|
|
36
|
-
logger.info('123');
|
|
37
|
-
logger.info('123');
|
|
38
|
-
logger.info('123');
|
|
39
|
-
logger.info('123');
|
|
28
|
+
logger.error(e, '123');
|
|
40
29
|
});
|
package/src/trace.ts
CHANGED