serverless/lib/plugins/aws/utils/format-lambda-log-event.js
2024-05-19 23:22:40 -07:00

53 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}`;
};