feat: Add option to change the log level of the logs emitted by triggers (#8328)

This commit is contained in:
alljinx
2022-12-07 22:55:45 +01:00
committed by GitHub
parent 0a8670dc22
commit 8f3b694e39
10 changed files with 286 additions and 137 deletions

View File

@@ -373,9 +373,9 @@ function userIdForLog(auth) {
return auth && auth.user ? auth.user.id : undefined;
}
function logTriggerAfterHook(triggerType, className, input, auth) {
function logTriggerAfterHook(triggerType, className, input, auth, logLevel) {
const cleanInput = logger.truncateLogMessage(JSON.stringify(input));
logger.info(
logger[logLevel](
`${triggerType} triggered for ${className} for user ${userIdForLog(
auth
)}:\n Input: ${cleanInput}`,
@@ -387,10 +387,10 @@ function logTriggerAfterHook(triggerType, className, input, auth) {
);
}
function logTriggerSuccessBeforeHook(triggerType, className, input, result, auth) {
function logTriggerSuccessBeforeHook(triggerType, className, input, result, auth, logLevel) {
const cleanInput = logger.truncateLogMessage(JSON.stringify(input));
const cleanResult = logger.truncateLogMessage(JSON.stringify(result));
logger.info(
logger[logLevel](
`${triggerType} triggered for ${className} for user ${userIdForLog(
auth
)}:\n Input: ${cleanInput}\n Result: ${cleanResult}`,
@@ -402,9 +402,9 @@ function logTriggerSuccessBeforeHook(triggerType, className, input, result, auth
);
}
function logTriggerErrorBeforeHook(triggerType, className, input, auth, error) {
function logTriggerErrorBeforeHook(triggerType, className, input, auth, error, logLevel) {
const cleanInput = logger.truncateLogMessage(JSON.stringify(input));
logger.error(
logger[logLevel](
`${triggerType} failed for ${className} for user ${userIdForLog(
auth
)}:\n Input: ${cleanInput}\n Error: ${JSON.stringify(error)}`,
@@ -444,7 +444,14 @@ export function maybeRunAfterFindTrigger(
reject(error);
}
);
logTriggerSuccessBeforeHook(triggerType, className, 'AfterFind', JSON.stringify(objects), auth);
logTriggerSuccessBeforeHook(
triggerType,
className,
'AfterFind',
JSON.stringify(objects),
auth,
config.logLevels.triggerBeforeSuccess
);
request.objects = objects.map(object => {
//setting the class name to transform into parse object
object.className = className;
@@ -468,7 +475,13 @@ export function maybeRunAfterFindTrigger(
})
.then(success, error);
}).then(results => {
logTriggerAfterHook(triggerType, className, JSON.stringify(results), auth);
logTriggerAfterHook(
triggerType,
className,
JSON.stringify(results),
auth,
config.logLevels.triggerAfter
);
return results;
});
}
@@ -842,7 +855,10 @@ export function maybeRunTrigger(
parseObject.className,
parseObject.toJSON(),
object,
auth
auth,
triggerType.startsWith('after')
? config.logLevels.triggerAfter
: config.logLevels.triggerBeforeSuccess
);
if (
triggerType === Types.beforeSave ||
@@ -860,7 +876,8 @@ export function maybeRunTrigger(
parseObject.className,
parseObject.toJSON(),
auth,
error
error,
config.logLevels.triggerBeforeError
);
reject(error);
}
@@ -885,7 +902,13 @@ export function maybeRunTrigger(
triggerType === Types.afterDelete ||
triggerType === Types.afterLogin
) {
logTriggerAfterHook(triggerType, parseObject.className, parseObject.toJSON(), auth);
logTriggerAfterHook(
triggerType,
parseObject.className,
parseObject.toJSON(),
auth,
config.logLevels.triggerAfter
);
}
// beforeSave is expected to return null (nothing)
if (triggerType === Types.beforeSave) {
@@ -965,7 +988,8 @@ export async function maybeRunFileTrigger(triggerType, fileObject, config, auth)
'Parse.File',
{ ...fileObject.file.toJSON(), fileSize: fileObject.fileSize },
result,
auth
auth,
config.logLevels.triggerBeforeSuccess
);
return result || fileObject;
} catch (error) {
@@ -974,7 +998,8 @@ export async function maybeRunFileTrigger(triggerType, fileObject, config, auth)
'Parse.File',
{ ...fileObject.file.toJSON(), fileSize: fileObject.fileSize },
auth,
error
error,
config.logLevels.triggerBeforeError
);
throw error;
}