serverless/lib/plugins/aws/utils/format-lambda-log-event.js
2024-05-29 11:51:04 -04:00

55 lines
1.3 KiB
JavaScript

import dayjs from 'dayjs'
import utils from '@serverlessinc/sf-core/src/utils.js'
const { style } = utils
export default (msgParam) => {
let msg = msgParam
const dateFormat = 'YYYY-MM-DD HH:mm:ss.SSS'
if (!msg.startsWith('REPORT')) msg = msg.trimRight()
if (
msg.startsWith('START') ||
msg.startsWith('INIT_START') ||
msg.startsWith('REPORT') ||
msg.startsWith('END')
) {
msg = msg.replace('RequestId:', '-')
msg = msg.replace('Version:', '- Version:')
if (msg.includes('\tDuration:')) {
msg = msg.split('\tDuration:').join('\nDuration:')
}
return style.aside(msg)
}
if (msg.trim() === 'Process exited before completing request') {
return style.error(msg)
}
const splitted = msg.split('\t')
if (splitted.length < 3) {
return msg
}
let date = ''
let reqId = ''
let level = ''
if (!isNaN(new Date(splitted[0]).getTime())) {
date = splitted[0]
reqId = splitted[1]
} else if (!isNaN(new Date(splitted[1]).getTime())) {
date = splitted[1]
reqId = splitted[2]
level = `${splitted[0]}\t`
} else {
return msg
}
const text = msg.split(`${level || reqId}\t`)[1]
const time = dayjs(date).format(dateFormat)
return `${style.aside(`${time} - ${reqId} - ${level}`)}\n${text}`
}