@v4fire/core
Version:
V4Fire core library
82 lines (72 loc) • 2.09 kB
text/typescript
/*!
* V4Fire Core
* https://github.com/V4Fire/Core
*
* Released under the MIT license
* https://github.com/V4Fire/Core/blob/master/LICENSE
*/
export type LogLevel = 'info' | 'warn' | 'error';
export interface LogMessageOptions {
context: string;
logLevel?: LogLevel;
}
export interface Logger {
(context: string | LogMessageOptions, ...details: unknown[]): void;
(context: string | LogMessageOptions, error: Error, ...details: unknown[]): void;
}
export interface ExtendedLogger extends Logger {
/**
* Logs a message with the info level and specified context
*
* @param context - log record context
* @param [details] - additional details
*/
info(context: string, ...details: unknown[]): void;
/**
* Logs a message with the warning level and specified context
*
* @param context - log record context
* @param [details] - additional details
*/
warn(context: string, ...details: unknown[]): void;
/**
* Logs a message with the warning level and specified context
*
* @param context - log record context
* @param error - thrown error
* @param [details] - additional details
*/
warn(context: string, error: Error, ...details: unknown[]): void;
/**
* Logs a message with the error level and specified context
*
* @param context - log record context
* @param [details] - additional details
*/
error(context: string, ...details: unknown[]): void;
/**
* Logs a message with the error level and specified context
*
* @param context - log record context
* @param error - thrown error
* @param [details] - additional details
*/
error(context: string, error: Error, ...details: unknown[]): void;
/**
* Returns a new logging function with the specified namespace
*
* @param value
*
* @example
* ```js
* const log2 = log.namespace('global');
* log2.info('res', 'hello');
* // Prints context 'global:res'
*
* const log3 = log.namespace('super').namespace('global');
* log3.info('res', 'hello');
* // Prints context 'super:global:res'
* ```
*/
namespace(value: string): ExtendedLogger;
}