diff --git a/src/logging/LogLevel.ts b/src/logging/LogLevel.ts new file mode 100644 index 000000000..e67f9755e --- /dev/null +++ b/src/logging/LogLevel.ts @@ -0,0 +1,4 @@ +/** + * Different log levels, from most important to least important. + */ +export type LogLevel = 'error' | 'warn' | 'info' | 'verbose' | 'debug' | 'silly'; diff --git a/src/logging/Logger.ts b/src/logging/Logger.ts new file mode 100644 index 000000000..b5c57ab47 --- /dev/null +++ b/src/logging/Logger.ts @@ -0,0 +1,17 @@ +import type { LogLevel } from './LogLevel'; + +/** + * Logs messages on a certain level. + * + * @see getLoggerFor on how to instantiate loggers. + */ +export interface Logger { + /** + * Log the given message at the given level. + * If the internal level is higher than the given level, the message may be voided. + * @param level - The level to log at. + * @param message - The message to log. + * @param meta - Optional metadata to include in the log message. + */ + log: (level: LogLevel, message: string, meta?: any) => Logger; +} diff --git a/src/logging/LoggerFactory.ts b/src/logging/LoggerFactory.ts new file mode 100644 index 000000000..4abe886e3 --- /dev/null +++ b/src/logging/LoggerFactory.ts @@ -0,0 +1,12 @@ +import type { Logger } from './Logger'; + +/** + * Instantiates new logger instances. + */ +export interface LoggerFactory { + /** + * Create a logger instance for the given label. + * @param label - A label that is used to identify the given logger. + */ + createLogger: (label: string) => Logger; +}