@qq-framework/logger
Biblioteca do QQ-FRAMEWORK para geração de logs. Ela concatena um Trace ID e um Transaction ID no console juntamente com os logs emitidos e tem como objetivo facilitar a análise de logs das aplicações.
Instalação
Instale as dependências
npm install @qq-framework/logger @qq-framework/http pino --save
Adicione o Logger e o Interceptador em sua aplicação
//main.ts
import { LoggerService } from '@qq-framework/logger'
import { HttpInterceptor } from '@qq-framework/http'
export let app: INestApplication
async function bootstrap() {
app = await NestFactory.create(AppModule, {
bufferLogs: false,
})
app.useLogger(app.get(LoggerService))
app.useGlobalInterceptors(app.get(HttpInterceptor))
....
}
Crie uma classe para gerar o TransactionId e o TraceId
// src/shared/infra/logger/LoggerCustomParams.ts
import { TraceId, TransactionId } from '@qq-framework/http'
import { LoggerCustomParams } from '@qq-framework/logger'
import { app } from '../../../main'
export class LoggerCustomParamsImpl implements LoggerCustomParams {
getTraceId(): string {
return (app.get(TraceId) as TraceId).getValue()
}
getTransactionId(): string {
return (app.get(TransactionId) as TransactionId).getValue()
}
}
Import o Logger na sua aplicação
//app.module.ts
import { LoggerModule } from '@qq-framework/logger'
import { LoggerCustomParamsImpl } from './shared/infra/logger/LoggerCustomParams'
@Module({
imports: [
LoggerModule.configure({ loggerCustomParams: LoggerCustomParamsImpl })
...
]
...
})
export class AppModule {}
Import o HttpModule em seus módulos
// any.module.ts
import { HttpModule } from '@qq-framework/http'
@Module({
imports: [
HttpModule,
],
...
})
export class AnyModule {}
Configure o nível de log de sua aplicação
// .env
APP_LOG_LEVEL='debug'
Use o Logger
import { Logger } from '@nestjs/common'
@Controller('core')
export class CoreController extends AbstractController {
private readonly logger = new Logger(CoreController.name)
...
@Post('select')
public async selectPost(@Req() req: any, @Res() response: any): Promise<void> {
this.logger.debug('AAAAAAAAAAAAAAA')
}
...
}
Se você fez tudo certo, os logs da sua aplicação devem se parecer com estes
Ao realizar uma requisição para um serviço da sua aplicação o response deve possuir dois novos headers, qq-trace-id e qq-transaction-id, atraves deles você conseguirá buscar todos os logs gerados por essa requisição.