import { Level } from "nightingale-levels"; import type { Handler, LogRecord, Metadata, MetadataStyles, Processor, Styles } from "nightingale-types"; export { Level } from "nightingale-levels"; export interface Options { symbol?: string; metadataStyles?: MetadataStyles; styles?: Styles; } export interface ComputedConfigForKey { handlers: Handler[]; processors: Processor[]; } export interface ExtendedFunctionNameMetadata { functionName: string; } export interface Config { handler?: Handler; handlers?: Handler[]; key?: string; keys?: string[]; pattern?: RegExp; processor?: Processor; processors?: Processor[]; stop?: boolean; } declare global { var __NIGHTINGALE_CONFIG: Config[]; var __NIGHTINGALE_LOGGER_MAP_CACHE: Map; var __NIGHTINGALE_CONFIG_DEFAULT: ComputedConfigForKey; var __NIGHTINGALE_GLOBAL_HANDLERS: unknown; var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER: (key: string) => ComputedConfigForKey; var __NIGHTINGALE_GET_CONFIG_FOR_LOGGER_RECORD: (key: string, level: number) => ComputedConfigForKey; } /** * Interface that allows you to log records. * This records are treated by handlers */ export declare class Logger { private contextObject?; readonly key: string; readonly displayName?: string; /** * Create a new Logger * * @param {string} key * @param {string} [displayName] */ constructor(key: string, displayName?: string); /** @private */ protected getHandlersAndProcessors(recordLevel: number): ComputedConfigForKey; /** @private */ getConfig(): Readonly; /** * Create a child logger */ child(childSuffixKey: string, childDisplayName?: string): Logger; /** * Create a new Logger with the same key a this attached context * * @example * ```typescript * const loggerMyService = new Logger('app:myService'); * function someAction(arg1) { * const logger = loggerMyService.context({ arg1 }); * logger.enter(someAction); * // do stuff * logger.info('info'); * // do stuff * logger.exit(someAction); * } * ``` * */ context(context: Record): Logger; /** * Get the context of this logger */ getContextObject(): Readonly> | undefined; /** * Set the context of this logger * * @param {Object} context */ setContext(context: Record): void; /** * Extends existing context of this logger */ extendsContext(extendedContext: Record): void; /** * Handle a record * * Use this only if you know what you are doing. */ addRecord(record: Readonly>): void; /** * Log a message */ log(messageOrError: Error | string, metadata?: T, level?: Level, options?: Options): void; /** * Log a trace message */ trace(messageOrError: Error | string, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Log a debug message */ debug(messageOrError: Error | string, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Notice an info message */ notice(messageOrError: Error | string, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Log an info message */ info(messageOrError: Error | string, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Log a warn message */ warn(messageOrError: Error | string, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Log an error message * * @example * ```typescript * const logger = new Logger('something'); * try { * throw new Error('Always throws here'); * } catch (error) { * logger.error('caught error', { error }); * } * ``` */ error(messageOrError: Error | string, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Log an critical message */ critical(messageOrError: Error | string, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Log a fatal message * * @example * ```typescript * const logger = new Logger('something'); * try { * throw new Error('Always throws here'); * } catch (error) { * logger.error('caught error', { error }); * process.exit(1); * } */ fatal(messageOrError: Error | string, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Log an alert message */ alert(messageOrError: Error | string, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Log an inspected value */ inspectValue(value: unknown, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Log a debugged var */ inspectVar(varName: string, varValue: unknown, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Alias for infoSuccess */ success(message: string, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Log an info success message */ infoSuccess(message: string, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Log an debug success message */ debugSuccess(message: string, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Alias for infoFail */ fail(messageOrError: Error | string, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Log an info fail message */ infoFail(messageOrError: Error | string, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Log an debug fail message */ debugFail(messageOrError: Error | string, metadata?: T, metadataStyles?: MetadataStyles): void; /** * @returns {number} time to pass to timeEnd */ time(message?: string, metadata?: T, metadataStyles?: MetadataStyles, level?: number): number; infoTime(message?: string, metadata?: T, metadataStyles?: MetadataStyles): number; /** * Finds difference between when this method * was called and when the respective time method * was called, then logs out the difference * and deletes the original record */ timeEnd(startTime: number, message: string, metadata?: T, metadataStyles?: MetadataStyles, level?: number, options?: Options): void; /** * Like timeEnd, but with INFO level */ infoTimeEnd(time: number, message: string, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Like timeEnd, but with INFO level */ infoSuccessTimeEnd(time: number, message: string, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Log an enter in a function * * @example * ```typescript * class A { * method(arg1) { * logger.enter(method, { arg1 }); * // Do your stuff * } * } * ``` * */ enter unknown>(fn: Fn, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Log an exit in a function * * @example * ```typescript * const logger = new Logger('myNamespace:A'); * class A { * method(arg1) { * // Do your stuff * logger.exit(method, { arg1 }); * } * } * ``` */ exit unknown>(fn: Fn, metadata?: T, metadataStyles?: MetadataStyles): void; /** * Wrap around a function to log enter and exit of a function * * @example * ```typescript * const logger = new Logger('myNamespace:A'); * class A { * method() { * logger.wrap(method, () => { * // Do your stuff * }); * } * } * ``` */ wrap unknown>(fn: Fn, callback: () => void): void; wrap unknown>(fn: Fn, metadata: T, callback: () => void): void; wrap unknown>(fn: Fn, metadata: T, metadataStyles: MetadataStyles, callback: () => void): void; } //# sourceMappingURL=index.d.ts.map