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
npm install --save @middy/input-output-logger
yarn 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***
replacer
function: stringifyreplacer
function
Sample usage
import middy from '@middy/core'
import inputOutputLogger from '@middy/input-output-logger'
const handler = middy((event, context) => {
const response = {
statusCode: 200,
headers: {},
body: JSON.stringify({ message: 'hello world' })
}
return response
})
handler.use(inputOutputLogger())
import middy from '@middy/core'
import inputOutputLogger from '@middy/input-output-logger'
import pino from 'pino'
const logger = pino()
const handler = middy((event, context) => {
// ...
return response
})
handler.use(
inputOutputLogger({
logger: (request) => {
const child = logger.child(request.context)
child.info(request.event ?? request.response)
},
awsContext: true
})
)