feat: Add MongoDB client event logging via database option logClientEvents (#9914)

This commit is contained in:
Manuel
2025-11-08 15:48:29 +01:00
committed by GitHub
parent 2424054221
commit b760733b98
9 changed files with 501 additions and 25 deletions

View File

@@ -1083,6 +1083,59 @@ module.exports.FileUploadOptions = {
default: ['^(?![xXsS]?[hH][tT][mM][lL]?$)'],
},
};
/* The available log levels for Parse Server logging. Valid values are:<br>- `'error'` - Error level (highest priority)<br>- `'warn'` - Warning level<br>- `'info'` - Info level (default)<br>- `'verbose'` - Verbose level<br>- `'debug'` - Debug level<br>- `'silly'` - Silly level (lowest priority) */
module.exports.LogLevel = {
debug: {
env: 'PARSE_SERVER_LOG_LEVEL_DEBUG',
help: 'Debug level',
required: true,
},
error: {
env: 'PARSE_SERVER_LOG_LEVEL_ERROR',
help: 'Error level - highest priority',
required: true,
},
info: {
env: 'PARSE_SERVER_LOG_LEVEL_INFO',
help: 'Info level - default',
required: true,
},
silly: {
env: 'PARSE_SERVER_LOG_LEVEL_SILLY',
help: 'Silly level - lowest priority',
required: true,
},
verbose: {
env: 'PARSE_SERVER_LOG_LEVEL_VERBOSE',
help: 'Verbose level',
required: true,
},
warn: {
env: 'PARSE_SERVER_LOG_LEVEL_WARN',
help: 'Warning level',
required: true,
},
};
module.exports.LogClientEvent = {
keys: {
env: 'PARSE_SERVER_DATABASE_LOG_CLIENT_EVENTS_KEYS',
help:
'Optional array of dot-notation paths to extract specific data from the event object. If not provided or empty, the entire event object will be logged.',
action: parsers.arrayParser,
},
logLevel: {
env: 'PARSE_SERVER_DATABASE_LOG_CLIENT_EVENTS_LOG_LEVEL',
help:
"The log level to use for this event. See [LogLevel](LogLevel.html) for available values. Defaults to `'info'`.",
default: 'info',
},
name: {
env: 'PARSE_SERVER_DATABASE_LOG_CLIENT_EVENTS_NAME',
help:
'The MongoDB driver event name to listen for. See the [MongoDB driver events documentation](https://www.mongodb.com/docs/drivers/node/current/fundamentals/monitoring/) for available events.',
required: true,
},
};
module.exports.DatabaseOptions = {
appName: {
env: 'PARSE_SERVER_DATABASE_APP_NAME',
@@ -1219,6 +1272,12 @@ module.exports.DatabaseOptions = {
'The MongoDB driver option to specify the size (in milliseconds) of the latency window for selecting among multiple suitable MongoDB instances.',
action: parsers.numberParser('localThresholdMS'),
},
logClientEvents: {
env: 'PARSE_SERVER_DATABASE_LOG_CLIENT_EVENTS',
help: 'An array of MongoDB client event configurations to enable logging of specific events.',
action: parsers.arrayParser,
type: 'LogClientEvent[]',
},
maxConnecting: {
env: 'PARSE_SERVER_DATABASE_MAX_CONNECTING',
help:
@@ -1403,30 +1462,32 @@ module.exports.AuthAdapter = {
module.exports.LogLevels = {
cloudFunctionError: {
env: 'PARSE_SERVER_LOG_LEVELS_CLOUD_FUNCTION_ERROR',
help: 'Log level used by the Cloud Code Functions on error. Default is `error`.',
help:
'Log level used by the Cloud Code Functions on error. Default is `error`. See [LogLevel](LogLevel.html) for available values.',
default: 'error',
},
cloudFunctionSuccess: {
env: 'PARSE_SERVER_LOG_LEVELS_CLOUD_FUNCTION_SUCCESS',
help: 'Log level used by the Cloud Code Functions on success. Default is `info`.',
help:
'Log level used by the Cloud Code Functions on success. Default is `info`. See [LogLevel](LogLevel.html) for available values.',
default: 'info',
},
triggerAfter: {
env: 'PARSE_SERVER_LOG_LEVELS_TRIGGER_AFTER',
help:
'Log level used by the Cloud Code Triggers `afterSave`, `afterDelete`, `afterFind`, `afterLogout`. Default is `info`.',
'Log level used by the Cloud Code Triggers `afterSave`, `afterDelete`, `afterFind`, `afterLogout`. Default is `info`. See [LogLevel](LogLevel.html) for available values.',
default: 'info',
},
triggerBeforeError: {
env: 'PARSE_SERVER_LOG_LEVELS_TRIGGER_BEFORE_ERROR',
help:
'Log level used by the Cloud Code Triggers `beforeSave`, `beforeDelete`, `beforeFind`, `beforeLogin` on error. Default is `error`.',
'Log level used by the Cloud Code Triggers `beforeSave`, `beforeDelete`, `beforeFind`, `beforeLogin` on error. Default is `error`. See [LogLevel](LogLevel.html) for available values.',
default: 'error',
},
triggerBeforeSuccess: {
env: 'PARSE_SERVER_LOG_LEVELS_TRIGGER_BEFORE_SUCCESS',
help:
'Log level used by the Cloud Code Triggers `beforeSave`, `beforeDelete`, `beforeFind`, `beforeLogin` on success. Default is `info`.',
'Log level used by the Cloud Code Triggers `beforeSave`, `beforeDelete`, `beforeFind`, `beforeLogin` on success. Default is `info`. See [LogLevel](LogLevel.html) for available values.',
default: 'info',
},
};