sm-utility 1.2.1 → 1.3.0
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/logger/index.js +4 -10
- package/package.json +2 -1
- package/request/index.js +38 -19
package/logger/index.js
CHANGED
|
@@ -12,6 +12,7 @@ exports.logger = exports.logError = exports.loggerMiddleware = void 0;
|
|
|
12
12
|
var process_1 = require("process");
|
|
13
13
|
var winston_1 = __importDefault(require("winston"));
|
|
14
14
|
var express_winston_1 = __importDefault(require("express-winston"));
|
|
15
|
+
var ecs_winston_format_1 = __importDefault(require("@elastic/ecs-winston-format"));
|
|
15
16
|
var configs;
|
|
16
17
|
try {
|
|
17
18
|
configs = require(process_1.cwd() + "/logger.config");
|
|
@@ -19,15 +20,6 @@ try {
|
|
|
19
20
|
catch (_a) {
|
|
20
21
|
throw Error('Logger configs could not be found on app root\'s directory.');
|
|
21
22
|
}
|
|
22
|
-
function formatReqResLog(info) {
|
|
23
|
-
// in case the info itself is not from a request/response pair
|
|
24
|
-
if (!(info === null || info === void 0 ? void 0 : info.meta) || (info === null || info === void 0 ? void 0 : info.meta.req)) {
|
|
25
|
-
return JSON.stringify(info);
|
|
26
|
-
}
|
|
27
|
-
var level = info.level, _a = info.meta, req = _a.req, res = _a.res, responseTime = _a.responseTime;
|
|
28
|
-
var logData = Object.assign({}, { req: req, res: res, responseTime: responseTime + "ms" });
|
|
29
|
-
return level + " - [" + req.method + "] " + req.url + ": " + JSON.stringify(logData);
|
|
30
|
-
}
|
|
31
23
|
function filterRequestHeaders(confidentialHeaders) {
|
|
32
24
|
if (confidentialHeaders === void 0) { confidentialHeaders = []; }
|
|
33
25
|
return function (req, propName) {
|
|
@@ -82,11 +74,12 @@ function createLoggerMiddleware() {
|
|
|
82
74
|
transports: getTransports(),
|
|
83
75
|
requestFilter: filterRequestHeaders(configs.confidentialHeaders || []),
|
|
84
76
|
ignoreRoute: routeFilter,
|
|
85
|
-
format:
|
|
77
|
+
format: ecs_winston_format_1.default({ convertReqRes: true })
|
|
86
78
|
});
|
|
87
79
|
}
|
|
88
80
|
function createErrorLoggerMiddleware() {
|
|
89
81
|
return express_winston_1.default.errorLogger({
|
|
82
|
+
format: ecs_winston_format_1.default({ convertReqRes: true }),
|
|
90
83
|
transports: getTransports(),
|
|
91
84
|
requestFilter: filterRequestHeaders(configs.confidentialHeaders || []),
|
|
92
85
|
});
|
|
@@ -94,6 +87,7 @@ function createErrorLoggerMiddleware() {
|
|
|
94
87
|
exports.loggerMiddleware = createLoggerMiddleware();
|
|
95
88
|
exports.logError = createErrorLoggerMiddleware();
|
|
96
89
|
exports.logger = winston_1.default.createLogger({
|
|
90
|
+
format: ecs_winston_format_1.default({ convertReqRes: true }),
|
|
97
91
|
transports: getTransports(),
|
|
98
92
|
exitOnError: false,
|
|
99
93
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sm-utility",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "reusable utility codes for sm projects",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"typescript": "^4.2.4"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
+
"@elastic/ecs-winston-format": "^1.3.1",
|
|
31
32
|
"axios": "^0.23.0",
|
|
32
33
|
"express-winston": "^4.1.0",
|
|
33
34
|
"uuid": "^8.3.2",
|
package/request/index.js
CHANGED
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.createApi = void 0;
|
|
7
7
|
var axios_1 = __importDefault(require("axios"));
|
|
8
8
|
var uuid_1 = require("uuid");
|
|
9
|
+
var logger_1 = require("../logger");
|
|
9
10
|
function createApi(config) {
|
|
10
11
|
var axiosApi = axios_1.default.create(config);
|
|
11
12
|
axiosApi.interceptors.request.use(function (request) {
|
|
@@ -14,10 +15,7 @@ function createApi(config) {
|
|
|
14
15
|
request.meta = request.meta || {};
|
|
15
16
|
request.meta.requestId = uuid_1.v4();
|
|
16
17
|
request.meta.requestStartedAt = new Date().getTime();
|
|
17
|
-
|
|
18
|
-
data: data,
|
|
19
|
-
params: params,
|
|
20
|
-
});
|
|
18
|
+
logRequest(request.meta.requestId, method, fullUrl, data, params);
|
|
21
19
|
return request;
|
|
22
20
|
});
|
|
23
21
|
axiosApi.interceptors.response.use(function (response) {
|
|
@@ -25,31 +23,52 @@ function createApi(config) {
|
|
|
25
23
|
var method = config.method, meta = config.meta;
|
|
26
24
|
var fullUrl = getFullUrlFromConfig(config);
|
|
27
25
|
var responseTime = getResponseTimeFromConfig(config);
|
|
28
|
-
|
|
29
|
-
status: status,
|
|
30
|
-
data: data,
|
|
31
|
-
responseTime: responseTime,
|
|
32
|
-
});
|
|
26
|
+
logResponse(meta === null || meta === void 0 ? void 0 : meta.requestId, method, fullUrl, data, status, responseTime);
|
|
33
27
|
return response;
|
|
34
28
|
}, function (error) {
|
|
35
29
|
var config = error.config, message = error.message, response = error.response;
|
|
36
30
|
var method = config.method, meta = config.meta;
|
|
37
31
|
var fullUrl = getFullUrlFromConfig(config);
|
|
38
|
-
|
|
39
|
-
logApiInfo(meta === null || meta === void 0 ? void 0 : meta.requestId, 'Error', method, fullUrl, {
|
|
40
|
-
status: response === null || response === void 0 ? void 0 : response.status,
|
|
41
|
-
message: message,
|
|
42
|
-
data: response === null || response === void 0 ? void 0 : response.data,
|
|
43
|
-
responseTime: responseTime,
|
|
44
|
-
});
|
|
32
|
+
logError(meta === null || meta === void 0 ? void 0 : meta.requestId, method, fullUrl, response === null || response === void 0 ? void 0 : response.data, response === null || response === void 0 ? void 0 : response.status, message);
|
|
45
33
|
throw error;
|
|
46
34
|
});
|
|
47
35
|
return axiosApi;
|
|
48
36
|
}
|
|
49
37
|
exports.createApi = createApi;
|
|
50
|
-
function
|
|
51
|
-
var
|
|
52
|
-
|
|
38
|
+
function logRequest(id, method, url, body, params) {
|
|
39
|
+
var _a;
|
|
40
|
+
var request = (_a = {},
|
|
41
|
+
_a['context-id'] = id,
|
|
42
|
+
_a.url = url,
|
|
43
|
+
_a.method = method === null || method === void 0 ? void 0 : method.toUpperCase(),
|
|
44
|
+
_a.params = params,
|
|
45
|
+
_a.body = body,
|
|
46
|
+
_a);
|
|
47
|
+
logger_1.logger.info('sm-utility/api-request', { request: request });
|
|
48
|
+
}
|
|
49
|
+
function logResponse(id, method, url, body, status, responseTime) {
|
|
50
|
+
var _a;
|
|
51
|
+
var response = (_a = {},
|
|
52
|
+
_a['context-id'] = id,
|
|
53
|
+
_a.url = url,
|
|
54
|
+
_a.method = method === null || method === void 0 ? void 0 : method.toUpperCase(),
|
|
55
|
+
_a.body = body,
|
|
56
|
+
_a.status = status,
|
|
57
|
+
_a.responseTime = responseTime,
|
|
58
|
+
_a);
|
|
59
|
+
logger_1.logger.info('sm-utility/api-response', { response: response });
|
|
60
|
+
}
|
|
61
|
+
function logError(id, method, url, data, status, message) {
|
|
62
|
+
var _a;
|
|
63
|
+
var err = (_a = {},
|
|
64
|
+
_a['context-id'] = id,
|
|
65
|
+
_a.url = url,
|
|
66
|
+
_a.method = method === null || method === void 0 ? void 0 : method.toUpperCase(),
|
|
67
|
+
_a.data = data,
|
|
68
|
+
_a.status = status,
|
|
69
|
+
_a.message = message,
|
|
70
|
+
_a);
|
|
71
|
+
logger_1.logger.error('sm-utility/api-error', { err: err });
|
|
53
72
|
}
|
|
54
73
|
function getResponseTimeFromConfig(config) {
|
|
55
74
|
var _a;
|