loglevelnext
Version:
A modern logging library for Node.js and modern browsers that provides log level mapping to the console
101 lines (96 loc) • 3.32 kB
text/typescript
interface PrefixTemplateOptions {
level: string;
logger: LogLevel;
}
type PrefixTemplateFn = (options: PrefixTemplateOptions) => string;
interface PrefixFactoryOptions {
[key: string]: PrefixTemplateFn | string | undefined;
level?: PrefixTemplateFn;
name?: PrefixTemplateFn;
template?: string;
time?: PrefixTemplateFn;
}
declare class PrefixFactory extends MethodFactory {
private options;
constructor(logger?: LogLevel, options?: PrefixFactoryOptions);
interpolate(level: string): string;
make(methodName: string): (...args: any[]) => void;
}
type SomeLevel = number | string;
interface LogLevelIndex {
[key: string]: any;
}
interface LogLevelOptions {
factory?: Factory;
id?: string;
level?: number | string;
name?: string;
prefix?: PrefixFactoryOptions;
}
declare class LogLevel<TLevels extends FactoryLevels = typeof defaultLevels> implements LogLevelIndex {
[key: string]: any;
name: string;
type: string;
private currentLevel;
private methodFactory;
private options;
constructor(options: LogLevelOptions);
get level(): TLevels[keyof TLevels];
get levels(): TLevels;
get factory(): Factory<TLevels>;
set factory(factory: Factory<TLevels>);
set level(logLevel: SomeLevel);
disable(): void;
enable(): void;
}
interface BindTarget {
[key: string]: Function;
}
type FactoryLevels = Record<Uppercase<string>, number> & {
DEBUG: number;
ERROR: number;
INFO: number;
SILENT: number;
TRACE: number;
WARN: number;
};
declare const defaultLevels: FactoryLevels;
declare const levels: unique symbol;
declare const instance: unique symbol;
interface Factory<TLevels extends FactoryLevels = typeof defaultLevels> {
[key: string]: any;
bindMethod: (obj: BindTarget, methodName: string) => any;
distillLevel: (level: number | string) => any;
[instance]: LogLevel | undefined;
levelValid: (level: number) => boolean;
[levels]: TLevels;
levels: TLevels;
logger: LogLevel;
make: (methodName: string) => Function;
methods?: string[];
replaceMethods: (logLevel: number | string) => void;
}
type MethodFactoryLevels = Lowercase<keyof FactoryLevels>;
declare class MethodFactory<TLevels extends FactoryLevels = typeof defaultLevels> implements Factory<TLevels> {
[instance]: LogLevel | undefined;
[levels]: TLevels;
constructor(logger?: LogLevel);
get levels(): TLevels;
get logger(): LogLevel;
get methods(): string[];
set logger(logger: LogLevel);
bindMethod(obj: BindTarget, methodName: string): any;
distillLevel(level: number | string): number | null;
levelValid(level: number): boolean;
make(methodName: string): Function;
replaceMethods(logLevel: number | string): void;
}
declare class DefaultLogger extends LogLevel {
private cache;
constructor();
get factories(): any;
get loggers(): Record<string, LogLevel<FactoryLevels>>;
create(opts: LogLevelOptions | string): LogLevel<FactoryLevels>;
}
declare const _default: DefaultLogger;
export { Factory, FactoryLevels, LogLevel, LogLevelIndex, LogLevelOptions, MethodFactory, MethodFactoryLevels, PrefixFactory, PrefixFactoryOptions, PrefixTemplateFn, PrefixTemplateOptions, _default as default, defaultLevels };