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.
Files changed (2) hide show
  1. package/lib/server.js +36 -24
  2. 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
- * If we're throwing errors, let's have them say a little more than just 500
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 prettyPrintErrors(request, h) {
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
- if (!response.isBoom) {
26
- return h.continue;
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
- const err = response;
30
- const errName = err.output.payload.error;
31
- const errMessage = err.message;
32
- const { statusCode } = err.output.payload;
33
- const stack = err.stack || errMessage;
37
+ const res = {
38
+ statusCode,
39
+ error: errName,
40
+ message: errMessage
41
+ };
34
42
 
35
- if (statusCode === 500) {
36
- request.log(['server', 'error'], stack);
37
- }
43
+ if (err.data) {
44
+ res.data = err.data;
45
+ }
38
46
 
39
- const res = {
40
- statusCode,
41
- error: errName,
42
- message: errMessage
43
- };
47
+ return h.response(res).code(statusCode);
48
+ }
44
49
 
45
- if (err.data) {
46
- res.data = err.data;
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.response(res).code(statusCode);
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
- // Write prettier errors
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) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "screwdriver-api",
3
- "version": "8.0.14",
3
+ "version": "8.0.15",
4
4
  "description": "API server for the Screwdriver.cd service",
5
5
  "main": "index.js",
6
6
  "scripts": {