File tree 3 files changed +22
-2
lines changed
3 files changed +22
-2
lines changed Original file line number Diff line number Diff line change 1
- import { container } from '@sapphire/pieces' ;
1
+ import { container , Store } from '@sapphire/pieces' ;
2
2
import type { Awaited } from '@sapphire/utilities' ;
3
3
import { Client , ClientOptions , Message } from 'discord.js' ;
4
4
import { join } from 'path' ;
@@ -96,6 +96,13 @@ export interface SapphireClientOptions {
96
96
*/
97
97
logger ?: ClientLoggerOptions ;
98
98
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
+
99
106
/**
100
107
* If Sapphire should load our pre-included error event listeners that log any encountered errors to the {@link SapphireClient.logger} instance
101
108
* @since 1.0.0
@@ -212,6 +219,9 @@ export class SapphireClient extends Client {
212
219
213
220
this . logger = options . logger ?. instance ?? new Logger ( options . logger ?. level ?? LogLevel . Info ) ;
214
221
container . logger = this . logger ;
222
+ if ( options . enableLoaderTraceLoggings ?? container . logger . has ( LogLevel . Trace ) ) {
223
+ Store . logger = container . logger . trace . bind ( container . logger ) ;
224
+ }
215
225
216
226
this . stores = new StoreRegistry ( ) ;
217
227
container . stores = this . stores ;
Original file line number Diff line number Diff line change @@ -39,6 +39,12 @@ export const enum LogLevel {
39
39
}
40
40
41
41
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
+
42
48
/**
43
49
* Alias of {@link ILogger.write} with {@link LogLevel.Trace} as level.
44
50
* @param values The values to log.
Original file line number Diff line number Diff line change @@ -7,6 +7,10 @@ export class Logger implements ILogger {
7
7
this . level = level ;
8
8
}
9
9
10
+ public has ( level : LogLevel ) : boolean {
11
+ return level >= this . level ;
12
+ }
13
+
10
14
public trace ( ...values : readonly unknown [ ] ) : void {
11
15
this . write ( LogLevel . Trace , ...values ) ;
12
16
}
@@ -32,7 +36,7 @@ export class Logger implements ILogger {
32
36
}
33
37
34
38
public write ( level : LogLevel , ...values : readonly unknown [ ] ) : void {
35
- if ( level < this . level ) return ;
39
+ if ( ! this . has ( level ) ) return ;
36
40
const method = Logger . levels . get ( level ) ;
37
41
if ( typeof method === 'string' ) console [ method ] ( ...values ) ;
38
42
}
You can’t perform that action at this time.
0 commit comments