import { ILogger, ReporterLogLevel } from './logger'; import { ErrorFormatter, IResultReporter, MessageLogLevel, Success } from '../base'; /** * A function that formats a value for logging. * @public */ export type LogValueFormatter = (value: T, detail?: TD) => string; /** * A function that formats a message for logging. * @public */ export type LogMessageFormatter = (message: string, detail?: TD) => string; /** * Parameters for creating a {@link Logging.LogReporter | LogReporter}. * @public */ export interface ILogReporterCreateParams { logger?: ILogger; valueFormatter?: LogValueFormatter; messageFormatter?: LogMessageFormatter; } /** * Abstract base class which wraps an existing {@link Logging.ILogger | ILogger} to implement * both {@link Logging.ILogger | ILogger} and {@link IResultReporter | IResultReporter}. * @public */ export declare class LogReporter implements ILogger, IResultReporter { /** * Base logger used to by this reporter. * @public */ readonly logger: ILogger; /** * The formatter to use for values. * @internal */ protected readonly _valueFormatter: LogValueFormatter; /** * The formatter to use for messages. * @internal */ protected readonly _messageFormatter: LogMessageFormatter; /** * Creates a new {@link Logging.LogReporter | LogReporter}. * @param params - The parameters for creating the {@link Logging.LogReporter | LogReporter}. */ constructor(params?: ILogReporterCreateParams); /** * {@inheritDoc Logging.ILogger.logLevel} */ get logLevel(): ReporterLogLevel; /** * {@inheritDoc Logging.ILogger.detail} */ detail(message?: unknown, ...parameters: unknown[]): Success; /** * {@inheritDoc Logging.ILogger.info} */ info(message?: unknown, ...parameters: unknown[]): Success; /** * {@inheritDoc Logging.ILogger.warn} */ warn(message?: unknown, ...parameters: unknown[]): Success; /** * {@inheritDoc Logging.ILogger.error} */ error(message?: unknown, ...parameters: unknown[]): Success; /** * {@inheritDoc Logging.ILogger.log} */ log(level: MessageLogLevel, message?: unknown, ...parameters: unknown[]): Success; /** * {@inheritDoc IResultReporter.reportSuccess} */ reportSuccess(level: MessageLogLevel, value: T, detail?: TD, message?: ErrorFormatter): void; /** * {@inheritDoc IResultReporter.reportFailure} */ reportFailure(level: MessageLogLevel, message: string, detail?: TD): void; /** * Creates a new {@link Logging.LogReporter | LogReporter} with the same logger but a different value formatter. * @param valueFormatter - The value formatter to use. * @returns A new {@link Logging.LogReporter | LogReporter} with the same logger but a different value formatter. */ withValueFormatter(valueFormatter: LogValueFormatter): LogReporter; /** * Generic method to try to format an object for logging. * @param value - The value to format. * @param detail - The detail to format. * @returns */ static tryFormatObject(value: T, detail?: TD): string; } //# sourceMappingURL=logReporter.d.ts.map