Skip to content

Commit 1a99cb3

Browse files
authored
Add maxLogFiles option (#6296)
https://community.parseplatform.org/t/server-log-retention/867/2 Maximum number of logs to keep. If not set, no logs will be removed. This can be a number of files or number of days. If using days, add 'd' as the suffix. (default: null). I'll run this in production for a few days. I assume it works. Useful for saving disk space. Update winston-daily-rotate-file package to 4.4.0
1 parent 49a0405 commit 1a99cb3

File tree

8 files changed

+59
-57
lines changed

8 files changed

+59
-57
lines changed

Diff for: package-lock.json

+32-53
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"tv4": "1.3.0",
5555
"uuid": "3.3.3",
5656
"winston": "3.2.1",
57-
"winston-daily-rotate-file": "3.10.0",
57+
"winston-daily-rotate-file": "4.4.0",
5858
"ws": "7.2.1"
5959
},
6060
"devDependencies": {

Diff for: resources/buildConfigDefinitions.js

+3
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,9 @@ function inject(t, list) {
218218
if (type === 'NumberOrBoolean') {
219219
type = 'Number|Boolean';
220220
}
221+
if (type === 'NumberOrString') {
222+
type = 'Number|String';
223+
}
221224
if (type === 'Adapter') {
222225
const adapterType = elt.typeAnnotation.typeParameters.params[0].id.name;
223226
type = `Adapter<${adapterType}>`;

Diff for: src/Adapters/Logger/WinstonLogger.js

+2
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export function configureLogger({
7979
logLevel = winston.level,
8080
verbose = defaults.verbose,
8181
silent = defaults.silent,
82+
maxLogFiles,
8283
} = {}) {
8384
if (verbose) {
8485
logLevel = 'verbose';
@@ -100,6 +101,7 @@ export function configureLogger({
100101
options.dirname = logsFolder;
101102
options.level = logLevel;
102103
options.silent = silent;
104+
options.maxFiles = maxLogFiles;
103105

104106
if (jsonLogs) {
105107
options.json = true;

Diff for: src/Controllers/index.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,18 @@ export function getLoggerController(
7676
logsFolder,
7777
verbose,
7878
logLevel,
79+
maxLogFiles,
7980
silent,
8081
loggerAdapter,
8182
} = options;
82-
const loggerOptions = { jsonLogs, logsFolder, verbose, logLevel, silent };
83+
const loggerOptions = {
84+
jsonLogs,
85+
logsFolder,
86+
verbose,
87+
logLevel,
88+
silent,
89+
maxLogFiles,
90+
};
8391
const loggerControllerAdapter = loadAdapter(
8492
loggerAdapter,
8593
WinstonLoggerAdapter,

Diff for: src/Options/Definitions.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ module.exports.ParseServerOptions = {
1919
},
2020
allowCustomObjectId: {
2121
env: 'PARSE_SERVER_ALLOW_CUSTOM_OBJECT_ID',
22-
help: 'Enable (or disable) custom objectId, defaults to false',
22+
help: 'Enable (or disable) custom objectId',
2323
action: parsers.booleanParser,
2424
default: false,
2525
},
@@ -230,6 +230,12 @@ module.exports.ParseServerOptions = {
230230
help: 'Max value for limit option on queries, defaults to unlimited',
231231
action: parsers.numberParser('maxLimit'),
232232
},
233+
maxLogFiles: {
234+
env: 'PARSE_SERVER_MAX_LOG_FILES',
235+
help:
236+
"Maximum number of logs to keep. If not set, no logs will be removed. This can be a number of files or number of days. If using days, add 'd' as the suffix. (default: null)",
237+
action: parsers.objectParser,
238+
},
233239
maxUploadSize: {
234240
env: 'PARSE_SERVER_MAX_UPLOAD_SIZE',
235241
help: 'Max file size for uploads, defaults to 20mb',

Diff for: src/Options/docs.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* @interface ParseServerOptions
33
* @property {Any} accountLockout account lockout policy for failed login attempts
44
* @property {Boolean} allowClientClassCreation Enable (or disable) client class creation, defaults to true
5-
* @property {Boolean} allowCustomObjectId Enable (or disable) custom objectId, defaults to false
5+
* @property {Boolean} allowCustomObjectId Enable (or disable) custom objectId
66
* @property {String[]} allowHeaders Add headers to Access-Control-Allow-Headers
77
* @property {Adapter<AnalyticsAdapter>} analyticsAdapter Adapter module for the analytics
88
* @property {String} appId Your Parse Application ID
@@ -42,6 +42,7 @@
4242
* @property {String} masterKey Your Parse Master Key
4343
* @property {String[]} masterKeyIps Restrict masterKey to be used by only these ips, defaults to [] (allow all ips)
4444
* @property {Number} maxLimit Max value for limit option on queries, defaults to unlimited
45+
* @property {Number|String} maxLogFiles Maximum number of logs to keep. If not set, no logs will be removed. This can be a number of files or number of days. If using days, add 'd' as the suffix. (default: null)
4546
* @property {String} maxUploadSize Max file size for uploads, defaults to 20mb
4647
* @property {Union} middleware middleware for express server, can be string or function
4748
* @property {Boolean} mountGraphQL Mounts the GraphQL endpoint

Diff for: src/Options/index.js

+3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { WSSAdapter } from '../Adapters/WebSocketServer/WSSAdapter';
1010
// @flow
1111
type Adapter<T> = string | any | T;
1212
type NumberOrBoolean = number | boolean;
13+
type NumberOrString = number | string;
1314
type ProtectedFields = any;
1415

1516
export interface ParseServerOptions {
@@ -51,6 +52,8 @@ export interface ParseServerOptions {
5152
verbose: ?boolean;
5253
/* Sets the level for logs */
5354
logLevel: ?string;
55+
/* Maximum number of logs to keep. If not set, no logs will be removed. This can be a number of files or number of days. If using days, add 'd' as the suffix. (default: null) */
56+
maxLogFiles: ?NumberOrString;
5457
/* Disables console output
5558
:ENV: SILENT */
5659
silent: ?boolean;

0 commit comments

Comments
 (0)