Skip to content

Commit f3a84d1

Browse files
committed
feat: automatically capture the API Gateway requestId
1 parent 513392f commit f3a84d1

File tree

4 files changed

+20
-0
lines changed

4 files changed

+20
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ By default, the following event data is tracked for each log statement.
101101
| Property | Value | Info |
102102
| ------------------------- | ------------------------------------------ | ------------------------------------------------------------------------ |
103103
| awsRequestId | context.awsRequestId | The unique request id for this request |
104+
| apiRequestId | context.requestContext.requestId | The API Gateway RequestId |
104105
| x-correlation-id | event.headers['x-correlation-id'] | The upstream request id for tracing |
105106
| x-correlation-trace-debug | event.headers['x-correlation-debug'] | The upstream service wants debug logs enabled for this request |
106107
| x-correlation-trace-id | process.env._X_AMZN_TRACE_ID_ | The AWS Xray tracking id |

src/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,12 @@ export default (extendedPinoOptions?: ExtendedPinoOptions): PinoLambdaLogger =>
119119
awsRequestId: context.awsRequestId,
120120
};
121121

122+
// capture api gateway request ID
123+
const apiRequestId = event.requestContext?.requestId;
124+
if (apiRequestId) {
125+
ctx.apiRequestId = apiRequestId;
126+
}
127+
122128
// capture any correlation headers sent from upstream callers
123129
if (event.headers) {
124130
Object.keys(event.headers).forEach((header) => {

src/tests/index.spec.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,15 @@ tap.test('should log an error message with requestId', (t) => {
3838
t.end();
3939
});
4040

41+
tap.test('should log an error message with apiRequestId', (t) => {
42+
const [log, output] = createLogger();
43+
44+
log.withRequest({ requestContext: { requestId: '59996' } }, { awsRequestId: '12345' });
45+
log.error('Message with apiRequestId');
46+
t.matchSnapshot(output.buffer);
47+
t.end();
48+
});
49+
4150
/**
4251
* Creates a test logger and output buffer for assertions
4352
* Returns the logger and the buffer

tap-snapshots/src-tests-index.spec.ts-TAP.test.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ exports[`src/tests/index.spec.ts TAP should log a simple info message > must mat
99
2016-12-01T06:00:00.000Z undefined INFO Simple message {"level":30,"time":1480572000000,"msg":"Simple message"}
1010
`
1111

12+
exports[`src/tests/index.spec.ts TAP should log an error message with apiRequestId > must match snapshot 1`] = `
13+
2016-12-01T06:00:00.000Z 12345 ERROR Message with apiRequestId {"level":50,"time":1480572000000,"awsRequestId":"12345","apiRequestId":"59996","x-correlation-id":"12345","msg":"Message with apiRequestId"}
14+
`
15+
1216
exports[`src/tests/index.spec.ts TAP should log an error message with requestId > must match snapshot 1`] = `
1317
2016-12-01T06:00:00.000Z 12345 ERROR Message with request ID {"level":50,"time":1480572000000,"awsRequestId":"12345","x-correlation-id":"12345","msg":"Message with request ID"}
1418
`

0 commit comments

Comments
 (0)