input-output-logger
Logs the incoming request (input) and the response (output).
By default, the logging operate by using the console.log
function. You can pass as a parameter a custom logger with additional logic if you need. It can be useful if you want to process the log by doing a http call or anything else.
Install
To install this middleware you can use NPM:
- npm
- Yarn
- pnpm
npm install --save @middy/input-output-logger
yarn add @middy/input-output-logger
pnpm add @middy/input-output-logger
Options
logger
function (defaultconsole.log
): logging function that accepts an objectawsContext
boolean (defaultfalse
): Include AWS Lambda context object to the loggeromitPaths
string[] (default[]
): property accepts an array of paths that will be used to remove particular fields import the logged objects. This could serve as a simple way to redact sensitive data from logs (default []). Examples:name
,user.name
,users.[].name
mask
string: String to replace omitted values with. Example:***omitted***
Note: If using with { streamifyResponse: true }
, your ReadableStream must be of type string
.
Sample usage
import middy from '@middy/core'
import inputOutputLogger from '@middy/input-output-logger'
const lambdaHandler = (event, context) => {
const response = {
statusCode: 200,
headers: {},
body: JSON.stringify({ message: 'hello world' })
}
return response
}
export const handler = middy().use(inputOutputLogger()).handler(lambdaHandler)
import middy from '@middy/core'
import inputOutputLogger from '@middy/input-output-logger'
import pino from 'pino'
const logger = pino()
const lambdaHandler = (event, context) => {
// ...
return response
}
export const handler = middy()
.use(
inputOutputLogger({
logger: (request) => {
const child = logger.child(request.context)
child.info(request.event ?? request.response)
},
awsContext: true
})
)
.handler(lambdaHandler)