Skip to content

Commit 85bfacb

Browse files
kyranetfavna
andauthored
feat(ILogger): add #has method, auto-register Store#logger (#221)
Co-authored-by: Jeroen Claassens <[email protected]>
1 parent 42ecd2f commit 85bfacb

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

src/lib/SapphireClient.ts

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { container } from '@sapphire/pieces';
1+
import { container, Store } from '@sapphire/pieces';
22
import type { Awaited } from '@sapphire/utilities';
33
import { Client, ClientOptions, Message } from 'discord.js';
44
import { join } from 'path';
@@ -96,6 +96,13 @@ export interface SapphireClientOptions {
9696
*/
9797
logger?: ClientLoggerOptions;
9898

99+
/**
100+
* Whether or not trace logging should be enabled.
101+
* @since 2.0.0
102+
* @default container.logger.has(LogLevel.Trace)
103+
*/
104+
enableLoaderTraceLoggings?: boolean;
105+
99106
/**
100107
* If Sapphire should load our pre-included error event listeners that log any encountered errors to the {@link SapphireClient.logger} instance
101108
* @since 1.0.0
@@ -212,6 +219,9 @@ export class SapphireClient extends Client {
212219

213220
this.logger = options.logger?.instance ?? new Logger(options.logger?.level ?? LogLevel.Info);
214221
container.logger = this.logger;
222+
if (options.enableLoaderTraceLoggings ?? container.logger.has(LogLevel.Trace)) {
223+
Store.logger = container.logger.trace.bind(container.logger);
224+
}
215225

216226
this.stores = new StoreRegistry();
217227
container.stores = this.stores;

src/lib/utils/logger/ILogger.ts

+6
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ export const enum LogLevel {
3939
}
4040

4141
export interface ILogger {
42+
/**
43+
* Checks whether a level is supported.
44+
* @param level The level to check.
45+
*/
46+
has(level: LogLevel): boolean;
47+
4248
/**
4349
* Alias of {@link ILogger.write} with {@link LogLevel.Trace} as level.
4450
* @param values The values to log.

src/lib/utils/logger/Logger.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ export class Logger implements ILogger {
77
this.level = level;
88
}
99

10+
public has(level: LogLevel): boolean {
11+
return level >= this.level;
12+
}
13+
1014
public trace(...values: readonly unknown[]): void {
1115
this.write(LogLevel.Trace, ...values);
1216
}
@@ -32,7 +36,7 @@ export class Logger implements ILogger {
3236
}
3337

3438
public write(level: LogLevel, ...values: readonly unknown[]): void {
35-
if (level < this.level) return;
39+
if (!this.has(level)) return;
3640
const method = Logger.levels.get(level);
3741
if (typeof method === 'string') console[method](...values);
3842
}

0 commit comments

Comments
 (0)