@rf-logger/logger-axios 0.2.0 → 0.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.
|
@@ -15,22 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
34
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
37
|
};
|
|
@@ -42,49 +43,46 @@ const AxiosLogger = __importStar(require("axios-logger"));
|
|
|
42
43
|
/**
|
|
43
44
|
* Wrap axios-logger "error" interceptor to customize the output.
|
|
44
45
|
*/
|
|
45
|
-
const wrappedErrorLogger = (logger) => (error) =>
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
axiosRetryConfig.retryCount < axiosRetryConfig.retries) {
|
|
71
|
-
logLevel = "warn";
|
|
72
|
-
}
|
|
46
|
+
const wrappedErrorLogger = (logger) => async (error) => AxiosLogger.errorLogger(error, {
|
|
47
|
+
logger: (message) => {
|
|
48
|
+
const statusCode = error.response?.status;
|
|
49
|
+
const request = error.request;
|
|
50
|
+
const response = error.response;
|
|
51
|
+
// To prevent cluttering the logs with the whole
|
|
52
|
+
// request and response objects, we omit them.
|
|
53
|
+
error.request = undefined;
|
|
54
|
+
error.response = undefined;
|
|
55
|
+
// In case of a 400 HTTP error, we only log it as a debug
|
|
56
|
+
// In case of a 500 HTTP error, we log it as a real error
|
|
57
|
+
let logLevel = statusCode && statusCode < 500 ? "debug" : "error";
|
|
58
|
+
// Reduce the log level from "error" to "warn" when using axios-retry and this is not the last retry
|
|
59
|
+
if (logLevel === "error" &&
|
|
60
|
+
error.config &&
|
|
61
|
+
"axios-retry" in error.config) {
|
|
62
|
+
const axiosRetryConfig = error.config["axios-retry"];
|
|
63
|
+
if (axiosRetryConfig &&
|
|
64
|
+
typeof axiosRetryConfig === "object" &&
|
|
65
|
+
"retryCount" in axiosRetryConfig &&
|
|
66
|
+
"retries" in axiosRetryConfig &&
|
|
67
|
+
typeof axiosRetryConfig.retryCount === "number" &&
|
|
68
|
+
typeof axiosRetryConfig.retries === "number" &&
|
|
69
|
+
axiosRetryConfig.retryCount < axiosRetryConfig.retries) {
|
|
70
|
+
logLevel = "warn";
|
|
73
71
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
72
|
+
}
|
|
73
|
+
logger.log(logLevel,
|
|
74
|
+
// We add the error directly in the message for easy reading
|
|
75
|
+
message, {
|
|
76
|
+
channel: "axios",
|
|
77
|
+
error,
|
|
78
|
+
});
|
|
79
|
+
// We add back the request and response so that they can be used in catch clauses
|
|
80
|
+
error.request = request;
|
|
81
|
+
error.response = response;
|
|
82
|
+
},
|
|
83
|
+
// For axios errors, we want to log the whole server response headers + data
|
|
84
|
+
headers: true,
|
|
85
|
+
data: true,
|
|
88
86
|
});
|
|
89
87
|
const axiosLogRequestResponse = (axios, logger) => {
|
|
90
88
|
axios.interceptors.request.use(AxiosLogger.requestLogger, wrappedErrorLogger(logger));
|
|
@@ -108,7 +106,7 @@ const enhanceAxiosModule = (axios, logger) => {
|
|
|
108
106
|
const registerAxiosInterceptor = (logger) => {
|
|
109
107
|
AxiosLogger.setGlobalConfig({
|
|
110
108
|
logger: (message) => logger.http(message, { channel: "axios" }),
|
|
111
|
-
data: false,
|
|
109
|
+
data: false, // whether to include POST data in logs
|
|
112
110
|
params: true, // whether to include query parameters in logs
|
|
113
111
|
});
|
|
114
112
|
enhanceAxiosModule(axios_1.default, logger);
|
package/package.json
CHANGED
|
@@ -7,21 +7,21 @@
|
|
|
7
7
|
"peerDependencies": {
|
|
8
8
|
"axios": "~0.27 || ^1.5",
|
|
9
9
|
"winston": "^3.8.2",
|
|
10
|
-
"@rf-logger/logger": "0.
|
|
10
|
+
"@rf-logger/logger": "0.3.0../logger"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"axios-better-stacktrace": "^2.1.5",
|
|
14
14
|
"axios-logger": "^2.7.1"
|
|
15
15
|
},
|
|
16
16
|
"devDependencies": {
|
|
17
|
-
"axios": "^1.
|
|
17
|
+
"axios": "^1.7.4",
|
|
18
18
|
"axios-mock-adapter": "^1.22.0",
|
|
19
19
|
"axios-retry": "^4.0.0"
|
|
20
20
|
},
|
|
21
21
|
"engines": {
|
|
22
22
|
"node": ">=16.0.0"
|
|
23
23
|
},
|
|
24
|
-
"version": "0.
|
|
24
|
+
"version": "0.3.0",
|
|
25
25
|
"scripts": {
|
|
26
26
|
"test": "jest",
|
|
27
27
|
"version": "pnpm version --no-git-tag-version"
|