1.0.9 • Published 4 months ago

@qq-framework/logger v1.0.9

Weekly downloads
-
License
ISC
Repository
-
Last release
4 months ago

@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

alt text

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.

alt text

1.0.9

4 months ago

1.0.9-beta1

5 months ago

1.0.8

8 months ago

1.0.7

8 months ago