import { ILogger } from './ILogger'; export function LogExecution(label?: string) { return function ( target: any, propertyKey: string, descriptor: PropertyDescriptor ) { const original = descriptor.value; descriptor.value = async function (...args: any[]) { const logger: ILogger = this.logger; const context = label || `${target.constructor.name}.${propertyKey}`; const start = Date.now(); logger.log(`Iniciando: ${context} | ${JSON.stringify({ args })}`); const result = await original.apply(this, args); const duration = Date.now() - start; logger.log(`Finalizado: ${context} em ${duration}ms`); return result; }; return descriptor; }; }