@@ -28,13 +28,23 @@ const jsonErrorReplacer = (_, value) => {
28
28
return value ;
29
29
} ;
30
30
31
- function formatJsonMessage ( requestId , timestamp , level , ...messageParams ) {
31
+ function formatJsonMessage (
32
+ requestId ,
33
+ timestamp ,
34
+ level ,
35
+ tenantId ,
36
+ ...messageParams
37
+ ) {
32
38
let result = {
33
39
timestamp : timestamp ,
34
40
level : level . name ,
35
41
requestId : requestId ,
36
42
} ;
37
43
44
+ if ( tenantId != undefined && tenantId != null ) {
45
+ result . tenantId = tenantId ;
46
+ }
47
+
38
48
if ( messageParams . length === 1 ) {
39
49
result . message = messageParams [ 0 ] ;
40
50
try {
@@ -65,6 +75,13 @@ let _currentRequestId = {
65
75
set : ( id ) => ( global [ REQUEST_ID_SYMBOL ] = id ) ,
66
76
} ;
67
77
78
+ /* Use a unique symbol to provide global access without risk of name clashes. */
79
+ const TENANT_ID_SYMBOL = Symbol . for ( 'aws.lambda.runtime.tenantId' ) ;
80
+ let _currentTenantId = {
81
+ get : ( ) => global [ TENANT_ID_SYMBOL ] ,
82
+ set : ( id ) => ( global [ TENANT_ID_SYMBOL ] = id ) ,
83
+ } ;
84
+
68
85
/**
69
86
* Write logs to stdout.
70
87
*/
@@ -82,7 +99,15 @@ let logTextToStdout = (level, message, ...params) => {
82
99
let logJsonToStdout = ( level , message , ...params ) => {
83
100
let time = new Date ( ) . toISOString ( ) ;
84
101
let requestId = _currentRequestId . get ( ) ;
85
- let line = formatJsonMessage ( requestId , time , level , message , ...params ) ;
102
+ let tenantId = _currentTenantId . get ( ) ;
103
+ let line = formatJsonMessage (
104
+ requestId ,
105
+ time ,
106
+ level ,
107
+ tenantId ,
108
+ message ,
109
+ ...params ,
110
+ ) ;
86
111
line = line . replace ( / \n / g, '\r' ) ;
87
112
process . stdout . write ( line + '\n' ) ;
88
113
} ;
@@ -125,10 +150,12 @@ let logJsonToFd = function (logTarget) {
125
150
let date = new Date ( ) ;
126
151
let time = date . toISOString ( ) ;
127
152
let requestId = _currentRequestId . get ( ) ;
153
+ let tenantId = _currentTenantId . get ( ) ;
128
154
let enrichedMessage = formatJsonMessage (
129
155
requestId ,
130
156
time ,
131
157
level ,
158
+ tenantId ,
132
159
message ,
133
160
...params ,
134
161
) ;
@@ -239,6 +266,7 @@ let _patchConsole = () => {
239
266
240
267
module . exports = {
241
268
setCurrentRequestId : _currentRequestId . set ,
269
+ setCurrentTenantId : _currentTenantId . set ,
242
270
patchConsole : _patchConsole ,
243
271
structuredConsole : structuredConsole ,
244
272
} ;
0 commit comments