23 lines
725 B
TypeScript
23 lines
725 B
TypeScript
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;
|
|
};
|
|
}
|