49 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
const loggerMiddleware = () => (next, context) => async (args) => {
 | 
						|
    try {
 | 
						|
        const response = await next(args);
 | 
						|
        const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context;
 | 
						|
        const { overrideInputFilterSensitiveLog, overrideOutputFilterSensitiveLog } = dynamoDbDocumentClientOptions;
 | 
						|
        const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;
 | 
						|
        const outputFilterSensitiveLog = overrideOutputFilterSensitiveLog ?? context.outputFilterSensitiveLog;
 | 
						|
        const { $metadata, ...outputWithoutMetadata } = response.output;
 | 
						|
        logger?.info?.({
 | 
						|
            clientName,
 | 
						|
            commandName,
 | 
						|
            input: inputFilterSensitiveLog(args.input),
 | 
						|
            output: outputFilterSensitiveLog(outputWithoutMetadata),
 | 
						|
            metadata: $metadata,
 | 
						|
        });
 | 
						|
        return response;
 | 
						|
    }
 | 
						|
    catch (error) {
 | 
						|
        const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context;
 | 
						|
        const { overrideInputFilterSensitiveLog } = dynamoDbDocumentClientOptions;
 | 
						|
        const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;
 | 
						|
        logger?.error?.({
 | 
						|
            clientName,
 | 
						|
            commandName,
 | 
						|
            input: inputFilterSensitiveLog(args.input),
 | 
						|
            error,
 | 
						|
            metadata: error.$metadata,
 | 
						|
        });
 | 
						|
        throw error;
 | 
						|
    }
 | 
						|
};
 | 
						|
const loggerMiddlewareOptions = {
 | 
						|
    name: "loggerMiddleware",
 | 
						|
    tags: ["LOGGER"],
 | 
						|
    step: "initialize",
 | 
						|
    override: true,
 | 
						|
};
 | 
						|
const getLoggerPlugin = (options) => ({
 | 
						|
    applyToStack: (clientStack) => {
 | 
						|
        clientStack.add(loggerMiddleware(), loggerMiddlewareOptions);
 | 
						|
    },
 | 
						|
});
 | 
						|
 | 
						|
exports.getLoggerPlugin = getLoggerPlugin;
 | 
						|
exports.loggerMiddleware = loggerMiddleware;
 | 
						|
exports.loggerMiddlewareOptions = loggerMiddlewareOptions;
 |