feat: Add MongoDB client event logging via database option logClientEvents (#9914)
This commit is contained in:
@@ -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',
|
||||
},
|
||||
};
|
||||
|
||||
@@ -238,6 +238,23 @@
|
||||
* @property {String[]} fileExtensions Sets the allowed file extensions for uploading files. The extension is defined as an array of file extensions, or a regex pattern.<br><br>It is recommended to restrict the file upload extensions as much as possible. HTML files are especially problematic as they may be used by an attacker who uploads a HTML form to look legitimate under your app's domain name, or to compromise the session token of another user via accessing the browser's local storage.<br><br>Defaults to `^(?![xXsS]?[hH][tT][mM][lL]?$)` which allows any file extension except those MIME types that are mapped to `text/html` and are rendered as website by a web browser.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @interface LogLevel
|
||||
* @property {StringLiteral} debug Debug level
|
||||
* @property {StringLiteral} error Error level - highest priority
|
||||
* @property {StringLiteral} info Info level - default
|
||||
* @property {StringLiteral} silly Silly level - lowest priority
|
||||
* @property {StringLiteral} verbose Verbose level
|
||||
* @property {StringLiteral} warn Warning level
|
||||
*/
|
||||
|
||||
/**
|
||||
* @interface LogClientEvent
|
||||
* @property {String[]} keys 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.
|
||||
* @property {String} logLevel The log level to use for this event. See [LogLevel](LogLevel.html) for available values. Defaults to `'info'`.
|
||||
* @property {String} name 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @interface DatabaseOptions
|
||||
* @property {String} appName The MongoDB driver option to specify the name of the application that created this MongoClient instance.
|
||||
@@ -262,6 +279,7 @@
|
||||
* @property {Number} heartbeatFrequencyMS The MongoDB driver option to specify the frequency in milliseconds at which the driver checks the state of the MongoDB deployment.
|
||||
* @property {Boolean} loadBalanced The MongoDB driver option to instruct the driver it is connecting to a load balancer fronting a mongos like service.
|
||||
* @property {Number} localThresholdMS The MongoDB driver option to specify the size (in milliseconds) of the latency window for selecting among multiple suitable MongoDB instances.
|
||||
* @property {LogClientEvent[]} logClientEvents An array of MongoDB client event configurations to enable logging of specific events.
|
||||
* @property {Number} maxConnecting The MongoDB driver option to specify the maximum number of connections that may be in the process of being established concurrently by the connection pool.
|
||||
* @property {Number} maxIdleTimeMS The MongoDB driver option to specify the amount of time in milliseconds that a connection can remain idle in the connection pool before being removed and closed.
|
||||
* @property {Number} maxPoolSize The MongoDB driver option to set the maximum number of opened, cached, ready-to-use database connections maintained by the driver.
|
||||
@@ -303,9 +321,9 @@
|
||||
|
||||
/**
|
||||
* @interface LogLevels
|
||||
* @property {String} cloudFunctionError Log level used by the Cloud Code Functions on error. Default is `error`.
|
||||
* @property {String} cloudFunctionSuccess Log level used by the Cloud Code Functions on success. Default is `info`.
|
||||
* @property {String} triggerAfter Log level used by the Cloud Code Triggers `afterSave`, `afterDelete`, `afterFind`, `afterLogout`. Default is `info`.
|
||||
* @property {String} triggerBeforeError Log level used by the Cloud Code Triggers `beforeSave`, `beforeDelete`, `beforeFind`, `beforeLogin` on error. Default is `error`.
|
||||
* @property {String} triggerBeforeSuccess Log level used by the Cloud Code Triggers `beforeSave`, `beforeDelete`, `beforeFind`, `beforeLogin` on success. Default is `info`.
|
||||
* @property {String} cloudFunctionError Log level used by the Cloud Code Functions on error. Default is `error`. See [LogLevel](LogLevel.html) for available values.
|
||||
* @property {String} cloudFunctionSuccess Log level used by the Cloud Code Functions on success. Default is `info`. See [LogLevel](LogLevel.html) for available values.
|
||||
* @property {String} triggerAfter Log level used by the Cloud Code Triggers `afterSave`, `afterDelete`, `afterFind`, `afterLogout`. Default is `info`. See [LogLevel](LogLevel.html) for available values.
|
||||
* @property {String} triggerBeforeError Log level used by the Cloud Code Triggers `beforeSave`, `beforeDelete`, `beforeFind`, `beforeLogin` on error. Default is `error`. See [LogLevel](LogLevel.html) for available values.
|
||||
* @property {String} triggerBeforeSuccess Log level used by the Cloud Code Triggers `beforeSave`, `beforeDelete`, `beforeFind`, `beforeLogin` on success. Default is `info`. See [LogLevel](LogLevel.html) for available values.
|
||||
*/
|
||||
|
||||
@@ -608,6 +608,32 @@ export interface FileUploadOptions {
|
||||
enableForPublic: ?boolean;
|
||||
}
|
||||
|
||||
/* 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) */
|
||||
export interface LogLevel {
|
||||
/* Error level - highest priority */
|
||||
error: 'error';
|
||||
/* Warning level */
|
||||
warn: 'warn';
|
||||
/* Info level - default */
|
||||
info: 'info';
|
||||
/* Verbose level */
|
||||
verbose: 'verbose';
|
||||
/* Debug level */
|
||||
debug: 'debug';
|
||||
/* Silly level - lowest priority */
|
||||
silly: 'silly';
|
||||
}
|
||||
|
||||
export interface LogClientEvent {
|
||||
/* 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. */
|
||||
name: string;
|
||||
/* 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. */
|
||||
keys: ?(string[]);
|
||||
/* The log level to use for this event. See [LogLevel](LogLevel.html) for available values. Defaults to `'info'`.
|
||||
:DEFAULT: info */
|
||||
logLevel: ?string;
|
||||
}
|
||||
|
||||
export interface DatabaseOptions {
|
||||
/* Enables database real-time hooks to update single schema cache. Set to `true` if using multiple Parse Servers instances connected to the same database. Failing to do so will cause a schema change to not propagate to all instances and re-syncing will only happen when the instances restart. To use this feature with MongoDB, a replica set cluster with [change stream](https://docs.mongodb.com/manual/changeStreams/#availability) support is required.
|
||||
:DEFAULT: false */
|
||||
@@ -725,6 +751,8 @@ export interface DatabaseOptions {
|
||||
createIndexRoleName: ?boolean;
|
||||
/* Set to `true` to disable validation of index fields. When disabled, indexes can be created even if the fields do not exist in the schema. This can be useful when creating indexes on fields that will be added later. */
|
||||
disableIndexFieldValidation: ?boolean;
|
||||
/* An array of MongoDB client event configurations to enable logging of specific events. */
|
||||
logClientEvents: ?(LogClientEvent[]);
|
||||
}
|
||||
|
||||
export interface AuthAdapter {
|
||||
@@ -736,23 +764,23 @@ export interface AuthAdapter {
|
||||
}
|
||||
|
||||
export interface LogLevels {
|
||||
/* 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
|
||||
*/
|
||||
triggerAfter: ?string;
|
||||
/* 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
|
||||
*/
|
||||
triggerBeforeSuccess: ?string;
|
||||
/* 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
|
||||
*/
|
||||
triggerBeforeError: ?string;
|
||||
/* Log level used by the Cloud Code Functions on success. Default is `info`.
|
||||
/* Log level used by the Cloud Code Functions on success. Default is `info`. See [LogLevel](LogLevel.html) for available values.
|
||||
:DEFAULT: info
|
||||
*/
|
||||
cloudFunctionSuccess: ?string;
|
||||
/* Log level used by the Cloud Code Functions on error. Default is `error`.
|
||||
/* Log level used by the Cloud Code Functions on error. Default is `error`. See [LogLevel](LogLevel.html) for available values.
|
||||
:DEFAULT: error
|
||||
*/
|
||||
cloudFunctionError: ?string;
|
||||
|
||||
Reference in New Issue
Block a user