screwdriver-api 8.0.14 → 8.0.15
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/lib/server.js +36 -24
- package/package.json +1 -1
package/lib/server.js
CHANGED
|
@@ -9,12 +9,11 @@ process.on('unhandledRejection', (reason, p) => {
|
|
|
9
9
|
});
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
* @method prettyPrintErrors
|
|
12
|
+
* @method handlePreResponseLogs
|
|
14
13
|
* @param {Hapi.Request} request Hapi Request object
|
|
15
14
|
* @param {Hapi.h} h Hapi Response Toolkit
|
|
16
15
|
*/
|
|
17
|
-
function
|
|
16
|
+
function handlePreResponseLogs(request, h) {
|
|
18
17
|
const { response } = request;
|
|
19
18
|
const { release } = request.server.app;
|
|
20
19
|
|
|
@@ -22,31 +21,45 @@ function prettyPrintErrors(request, h) {
|
|
|
22
21
|
h.state(release.cookieName, release.cookieValue);
|
|
23
22
|
}
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
// Pretty print errors
|
|
25
|
+
if (response.isBoom) {
|
|
26
|
+
const err = response;
|
|
27
|
+
const errName = err.output.payload.error;
|
|
28
|
+
const errMessage = err.message;
|
|
29
|
+
const { statusCode } = err.output.payload;
|
|
30
|
+
const stack = err.stack || errMessage;
|
|
31
|
+
|
|
32
|
+
// If we're throwing errors, let's have them say a little more than just 500
|
|
33
|
+
if (statusCode === 500) {
|
|
34
|
+
request.log(['server', 'error'], stack);
|
|
35
|
+
}
|
|
28
36
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
37
|
+
const res = {
|
|
38
|
+
statusCode,
|
|
39
|
+
error: errName,
|
|
40
|
+
message: errMessage
|
|
41
|
+
};
|
|
34
42
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
43
|
+
if (err.data) {
|
|
44
|
+
res.data = err.data;
|
|
45
|
+
}
|
|
38
46
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
error: errName,
|
|
42
|
-
message: errMessage
|
|
43
|
-
};
|
|
47
|
+
return h.response(res).code(statusCode);
|
|
48
|
+
}
|
|
44
49
|
|
|
45
|
-
|
|
46
|
-
|
|
50
|
+
// Log request payload when it takes longer than 5 seconds to respond
|
|
51
|
+
// This is to prevent logging payloads for every request
|
|
52
|
+
if (request.info && request.info.received && Date.now() - request.info.received > 5000 && request.payload) {
|
|
53
|
+
request.log(['payload'], {
|
|
54
|
+
method: request.method,
|
|
55
|
+
path: request.path,
|
|
56
|
+
payload: request.payload,
|
|
57
|
+
statusCode: request.response && request.response.statusCode,
|
|
58
|
+
responseTime: Date.now() - request.info.received
|
|
59
|
+
});
|
|
47
60
|
}
|
|
48
61
|
|
|
49
|
-
return h.
|
|
62
|
+
return h.continue;
|
|
50
63
|
}
|
|
51
64
|
|
|
52
65
|
/**
|
|
@@ -164,8 +177,7 @@ module.exports = async config => {
|
|
|
164
177
|
});
|
|
165
178
|
}
|
|
166
179
|
|
|
167
|
-
|
|
168
|
-
server.ext('onPreResponse', prettyPrintErrors);
|
|
180
|
+
server.ext('onPreResponse', handlePreResponseLogs);
|
|
169
181
|
|
|
170
182
|
// Audit log
|
|
171
183
|
if (config.log && config.log.audit.enabled) {
|