implementação do logger
This commit is contained in:
6
src/Log/ILogger.ts
Normal file
6
src/Log/ILogger.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export interface ILogger {
|
||||
log(message: string): void;
|
||||
warn(message: string): void;
|
||||
error(message: string, trace?: string): void;
|
||||
}
|
||||
|
||||
26
src/Log/NestLoggerAdapter.ts
Normal file
26
src/Log/NestLoggerAdapter.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import { Logger } from '@nestjs/common';
|
||||
import { ILogger } from './ILogger';
|
||||
|
||||
export class NestLoggerAdapter implements ILogger {
|
||||
private readonly logger: Logger;
|
||||
|
||||
constructor(private readonly context: string) {
|
||||
this.logger = new Logger(context);
|
||||
}
|
||||
|
||||
log(message: string, meta?: Record<string, any>): void {
|
||||
this.logger.log(this.formatMessage(message, meta));
|
||||
}
|
||||
|
||||
warn(message: string, meta?: Record<string, any>): void {
|
||||
this.logger.warn(this.formatMessage(message, meta));
|
||||
}
|
||||
|
||||
error(message: string, trace?: string, meta?: Record<string, any>): void {
|
||||
this.logger.error(this.formatMessage(message, meta), trace);
|
||||
}
|
||||
|
||||
private formatMessage(message: string, meta?: Record<string, any>): string {
|
||||
return meta ? `${message} | ${JSON.stringify(meta)}` : message;
|
||||
}
|
||||
}
|
||||
22
src/Log/logger.decorator.ts
Normal file
22
src/Log/logger.decorator.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
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;
|
||||
};
|
||||
}
|
||||
14
src/Log/logger.module.ts
Normal file
14
src/Log/logger.module.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { NestLoggerAdapter } from './NestLoggerAdapter';
|
||||
import { ILogger } from './ILogger';
|
||||
|
||||
@Module({
|
||||
providers: [
|
||||
{
|
||||
provide: 'LoggerService',
|
||||
useFactory: () => new NestLoggerAdapter('DataConsultService'),
|
||||
},
|
||||
],
|
||||
exports: ['LoggerService'],
|
||||
})
|
||||
export class LoggerModule {}
|
||||
Reference in New Issue
Block a user