import type { SafeLogEvent } from '../core/model'; /** * 渲染失败通过独立诊断回调上报,避免格式化器再次调用日志器形成递归。 * * @param errorType 不包含原始异常内容的错误类型名称。 * @returns 无返回值。 * @throws 回调实现可以在诊断通道写入失败时抛出异常。 */ export type SerializationDiagnostic = (errorType: string) => void; /** 预编译后的纯文本模板可被高频日志写入复用,避免每次输出都重新解析占位符。 */ export interface CompiledPlainPattern { readonly usesLogPosition: boolean; /** * 使用已编译片段渲染单条安全日志事件,避免写入时再次解析模板。 * * @param event 已规范化和脱敏的日志事件。 * @param options 颜色策略和可选的独立序列化诊断回调。 * @returns 可直接交给传输层的纯文本日志。 * @throws 不主动抛出异常;元数据序列化错误会被降级。 */ render(event: SafeLogEvent, options: PlainRenderOptions): string; } /** 纯文本渲染行为集中在具名选项中,避免调用点出现语义不明的布尔参数。 */ export interface PlainRenderOptions { readonly colors: boolean; readonly onError?: SerializationDiagnostic; } /** * 启动时校验并编译纯文本模板,使占位符错误在业务流量进入前即可被发现。 * * 详细设计: * 1. 使用全局令牌正则按顺序切分字面量和占位符,并在切分时拒绝不受支持的字段名称。 * 2. 扫描剩余字面量中的 `%{`,补足正则无法识别未闭合占位符的边界,确保错误模板不会静默通过。 * 3. 预计算是否消费调用位置,并返回基于不可变片段的渲染器;写入时只映射字段和拼接文本,不再解析模板。 * * @param pattern 用户配置的纯文本日志模板。 * @returns 可在高频写入中复用的已编译模板。 * @throws {LoggerConfigError} 当模板为空、占位符未知或语法未闭合时抛出。 */ export declare function compilePlainPattern(pattern: string): CompiledPlainPattern; /** * 配置加载阶段复用编译规则验证模板,保证实际渲染时使用同一套语法约束。 * * @param pattern 待验证的纯文本日志模板。 * @returns 无返回值。 * @throws {LoggerConfigError} 当模板为空、占位符未知或语法未闭合时抛出。 */ export declare function validatePlainPattern(pattern: string): void; //# sourceMappingURL=PlainFormat.d.ts.map