diff --git a/src/Defaults.ts b/src/Defaults.ts index 3d85dae..e1bf7ee 100644 --- a/src/Defaults.ts +++ b/src/Defaults.ts @@ -44,6 +44,7 @@ const customTypes: string[] = []; const guard = '_logger'; const webhook: { url?: string, id?: string, token?: string } = {}; const pruneDays = 3; +const skipFileWrite = false; type LogLevelType = { debug: LogLevel, @@ -83,7 +84,8 @@ export type LoggerMasterOptions = SharedOptionsType & { customColours?: { [key: string]: number | string }, broadcastLevel?: number, webhook?: WebhookClientOptions, - pruneDays?: number + pruneDays?: number, + skipFileWrite?: boolean } const MasterOptions: LoggerMasterOptions = { @@ -95,7 +97,8 @@ const MasterOptions: LoggerMasterOptions = { customColours, broadcastLevel: 4, webhook, - pruneDays + pruneDays, + skipFileWrite }; export type LoggerClientOptions = SharedOptionsType; diff --git a/src/MasterLogger.ts b/src/MasterLogger.ts index b3372d0..252f365 100644 --- a/src/MasterLogger.ts +++ b/src/MasterLogger.ts @@ -51,6 +51,7 @@ class MasterLogger implements Logger #rotateTO: NodeJS.Timeout; #pruneInterval: NodeJS.Timer; #pruneDays: number; + #skipFileWrite: boolean; constructor (config = Defaults.MasterOptions) { @@ -58,7 +59,7 @@ class MasterLogger implements Logger const { directory, customTypes = [], customStreams = [], customTypeMapping, customColours, guard, fileRotationFreq, logLevel, logLevelMapping, - webhook, broadcastLevel, pruneDays + webhook, broadcastLevel, pruneDays, skipFileWrite } = { ...Defaults.MasterOptions, ...config }; if (!directory) @@ -76,6 +77,7 @@ class MasterLogger implements Logger addLogLevel(name, level); }); this.#_guard = guard as string; + this.#skipFileWrite = skipFileWrite as boolean; this.#types = [ ...customTypes, ...Defaults.Types ]; for (const type of this.#types) @@ -105,11 +107,14 @@ class MasterLogger implements Logger this.#streamTypes = [ ...customStreams, 'error', 'default' ]; this.#streamTypeMapping = { ...Defaults.TypeStream, ...customTypeMapping }; - this.#writeStreams = this.#streamTypes.reduce((acc, type) => - { - acc[type] = this.loadFile(type); - return acc; - }, {} as WriteStreams); + if (this.#skipFileWrite) + this.#writeStreams = {}; + else + this.#writeStreams = this.#streamTypes.reduce((acc, type) => + { + acc[type] = this.loadFile(type); + return acc; + }, {} as WriteStreams); // Startup day, used to keep track of file rotation this.#rotationFreq = fileRotationFreq as number * DAY; @@ -232,6 +237,8 @@ class MasterLogger implements Logger }); } + if (this.#skipFileWrite) + return; const streamType = this.#streamTypeMapping[type] || 'default'; if (this.#writeStreams[streamType]) this.#writeStreams[streamType].write(`\n${type}${spacer} ${header}: ${subheader}${text}`);