import {LoggerFactory} from "./LoggerFactory"; import {Logger} from "./Logger"; import {noopLoggerFactory} from "./NoopLoggerFactory"; export type ContextLogger = (defaultLogger?: Logger) => Logger | undefined; /** 日志代理 */ export interface LoggerProxy { readonly loggerFactory: LoggerFactory; /** 代理类上的函数,包括:静态函数、实例成员函数、实例变量函数。 */ proxyClass(clazz: T): T; /** 代理实例上的函数,包括:实例成员函数、实例变量函数。 */ proxyInstance(instance: T, category?: string): T; /** 代理指定函数,包括:函数本身和函数上的静态函数。 */ proxyFunction(func: T, category?: string): T; } class NoopLoggerProxy implements LoggerProxy { loggerFactory: LoggerFactory; constructor(loggerFactory: LoggerFactory) { this.loggerFactory = loggerFactory; } proxyClass(clazz: T): T { return clazz; } proxyInstance(instance: T, _category?: string): T { return instance; } proxyFunction(func: T, _category?: string): T { return func; } } export const noopLoggerProxy = new NoopLoggerProxy(noopLoggerFactory);