1
- import {
1
+ import type {
2
2
AbsoluteLocation ,
3
3
HandlerExecutionContext ,
4
4
InitializeHandler ,
5
5
InitializeHandlerArguments ,
6
6
InitializeHandlerOptions ,
7
7
InitializeHandlerOutput ,
8
8
MetadataBearer ,
9
+ OperationSchema ,
9
10
Pluggable ,
10
11
} from "@smithy/types" ;
12
+ import { getSmithyContext } from "@smithy/util-middleware" ;
13
+
14
+ import { schemaLogFilter } from "./schemaLogFilter" ;
11
15
12
16
export const loggerMiddleware =
13
17
( ) =>
@@ -16,33 +20,42 @@ export const loggerMiddleware =
16
20
context : HandlerExecutionContext
17
21
) : InitializeHandler < any , Output > =>
18
22
async ( args : InitializeHandlerArguments < any > ) : Promise < InitializeHandlerOutput < Output > > => {
23
+ const { operationSchema } = getSmithyContext ( context ) as {
24
+ operationSchema : OperationSchema ;
25
+ } ;
26
+
19
27
try {
20
28
const response = await next ( args ) ;
21
- const { clientName, commandName, logger, dynamoDbDocumentClientOptions = { } } = context ;
22
29
23
- const { overrideInputFilterSensitiveLog, overrideOutputFilterSensitiveLog } = dynamoDbDocumentClientOptions ;
24
- const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context . inputFilterSensitiveLog ;
25
- const outputFilterSensitiveLog = overrideOutputFilterSensitiveLog ?? context . outputFilterSensitiveLog ;
30
+ const { clientName, commandName, logger } = context ;
31
+
32
+ const inputLogFilter = operationSchema
33
+ ? schemaLogFilter . bind ( operationSchema . input )
34
+ : context . inputFilterSensitiveLog ;
35
+ const outputLogFilter = operationSchema
36
+ ? schemaLogFilter . bind ( operationSchema . output )
37
+ : context . outputFilterSensitiveLog ;
26
38
27
39
const { $metadata, ...outputWithoutMetadata } = response . output ;
28
40
logger ?. info ?.( {
29
41
clientName,
30
42
commandName,
31
- input : inputFilterSensitiveLog ( args . input ) ,
32
- output : outputFilterSensitiveLog ( outputWithoutMetadata ) ,
43
+ input : inputLogFilter ( args . input ) ,
44
+ output : outputLogFilter ( outputWithoutMetadata ) ,
33
45
metadata : $metadata ,
34
46
} ) ;
35
47
return response ;
36
48
} catch ( error ) {
37
- const { clientName, commandName, logger, dynamoDbDocumentClientOptions = { } } = context ;
49
+ const { clientName, commandName, logger } = context ;
38
50
39
- const { overrideInputFilterSensitiveLog } = dynamoDbDocumentClientOptions ;
40
- const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context . inputFilterSensitiveLog ;
51
+ const inputLogFilter = operationSchema
52
+ ? schemaLogFilter . bind ( operationSchema . input )
53
+ : context . inputFilterSensitiveLog ;
41
54
42
55
logger ?. error ?.( {
43
56
clientName,
44
57
commandName,
45
- input : inputFilterSensitiveLog ( args . input ) ,
58
+ input : inputLogFilter ( args . input ) ,
46
59
error,
47
60
metadata : ( error as any ) . $metadata ,
48
61
} ) ;
0 commit comments