import { OnModuleInit } from '@nestjs/common'; import { CronExpression } from '@nestjs/schedule'; import { HttpLogQueryService } from './http-log-query.service'; /** * 日志清理配置接口 */ export interface LogCleanupConfig { /** 是否启用自动清理 */ enabled: boolean; /** 清理策略 */ strategy: 'retention' | 'size' | 'combination'; /** 保留天数 */ retentionDays: number; /** 最大记录数 */ maxRecords?: number; /** 定时清理表达式 */ schedule?: CronExpression; /** 批处理大小 */ batchSize?: number; /** 是否保留错误日志 */ preserveErrorLogs?: boolean; /** 错误日志保留天数 */ errorLogRetentionDays?: number; /** 是否保留重要日志 */ preserveImportantLogs?: boolean; /** 重要日志保留天数 */ importantLogRetentionDays?: number; /** 是否保留慢请求日志 */ preserveSlowRequests?: boolean; /** 慢请求日志保留天数 */ slowRequestRetentionDays?: number; /** 慢请求阈值(毫秒) */ slowRequestThreshold?: number; } /** * 清理统计信息 */ export interface CleanupStats { /** 清理时间 */ cleanupTime: Date; /** 清理策略 */ strategy: string; /** 清理前记录数 */ beforeCount: number; /** 清理后记录数 */ afterCount: number; /** 删除的记录数 */ deletedCount: number; /** 处理的批次数量 */ batchCount: number; /** 耗时(毫秒) */ duration: number; /** 错误信息 */ errors: string[]; } /** * HTTP日志清理服务 */ export declare class HttpLogCleanupService implements OnModuleInit { private readonly logQueryService; private readonly logger; private readonly defaultConfig; constructor(logQueryService: HttpLogQueryService, config?: Partial); private get cleanupConfig(); onModuleInit(): void; /** * 定时清理任务 */ scheduledCleanup(): Promise; /** * 执行手动清理 */ manualCleanup(options?: Partial): Promise; /** * 获取清理配置 */ getConfig(): LogCleanupConfig; /** * 更新清理配置 */ updateConfig(config: Partial): void; /** * 检查清理状态 */ getCleanupStatus(): Promise<{ enabled: boolean; config: LogCleanupConfig; currentStats: any; recommendations: string[]; }>; /** * 预览清理操作(不实际执行) */ previewCleanup(config?: Partial): Promise<{ strategy: string; currentRecords: number; estimatedDeletion: number; estimatedAfterCount: number; cutoffDate: Date; breakdown: { normalLogs: number; errorLogs: number; slowRequests: number; importantLogs: number; }; }>; /** * 执行清理操作 */ private performCleanup; /** * 基于时间的清理策略 */ private cleanupByRetention; /** * 基于数量的清理策略 */ private cleanupBySize; /** * 组合清理策略 */ private cleanupByCombination; /** * 创建清理统计 */ private createCleanupStats; }