import { BaseObject } from '../context/base.object';
import { RequestContext } from '../context/request.context';
import { DefaultSaveLogger } from '../base/logger';
import { ApiLogDTO } from '../model/api.log.dto';
import { LogLevel } from '../model/log.leval';
export declare abstract class MysqlLoggerWrapper extends BaseObject<RequestContext> implements MysqlLoggerWrapper {
    abstract save(log: ApiLogDTO): void;
    log(level: LogLevel, data: string | number | any[] | Record<string, any> | undefined): void;
    str(data: any | string | number): string;
}
/** 数据库日志 */
export declare class MysqlLogger extends DefaultSaveLogger {
    package: boolean;
    private readonly wrapper;
    private readonly onWritePackageLog?;
    private readonly onWriteLog?;
    private readonly level?;
    /** 数据库日志 */
    constructor(options?: {
        /** 单行日志的那些日志级别需要保存 */
        level?: LogLevel[];
        /** 日志是否整体保存，默认 `true` */
        logPackage: boolean;
        /** 自定义的 MySQL 日志 wrapper */
        wrapper?: MysqlLoggerWrapper;
        /** 上下文对象 */
        context?: RequestContext;
        /** 写整体保存日志, 当 `logPackage` 为 `true` 时会触发  */
        onWritePackageLog?: (log: ApiLogDTO, wrapper: MysqlLoggerWrapper) => void;
        /** 写单行日志，当 `logPackage` 不为 `true` 时会触发 */
        onWriteLog?: (level: LogLevel, data: string | number | any[] | Record<string, any> | undefined, wrapper: MysqlLoggerWrapper) => void;
    });
    save(data: ApiLogDTO): void;
    log(level: LogLevel, data: string | number | any[] | Record<string, any> | undefined): void;
}
