import { Logform } from 'winston'; import Transport from 'winston-transport'; import { MaybeUndefined } from '../../interfaces/index.js'; /** * Defining types */ export type LogData = Record; export type redactFn = (input: T) => string | T; export type AttachableTransports = 'console:pretty' | 'console:json' | 'file:json' | 'cloudwatch:json'; export type ContextProvider = () => MaybeUndefined; export interface Logger { verbose(message: string, ...meta: any[]): void; debug(message: string, ...meta: any[]): void; info(message: string, ...meta: any[]): void; http(message: string, ...meta: any[]): void; warn(message: string, ...meta: any[]): void; error(message: string, ...meta: any[]): void; } declare class LoggerStatic { private readonly logger; private getLogMetadata; private readonly contextProviders; constructor(); private getLogContext; isDebugEnabled(): boolean; setDefaultMetadata(metadata: object): this; setLogMetadataProvider(getLogMetadata: () => object): this; addContextProvider(namespace: string, provider: ContextProvider): this; /** Creates a redactor to remove sensitive fields. This mutates the original value. If no censor is given, the field is removed */ getRedactor(paths: string[], censor?: string | ((value: any) => any)): redactFn; /** Adds a transport to the logger */ addTransport(transport: Transport): this; attachTransport(type: AttachableTransports, format?: Logform.Format): this; /** Returns a child logger with the provided metadata */ getLogger(namespace: string, label: string): Logger; getLogger(metadata: object): Logger; addDefaultTransports(format?: Logform.Format): this; close(): void; } export declare const Logger: LoggerStatic; export {};