Kenlo library for centralized logging
* LOG_ENV
* LOG_LEVEL
* LOG_FIELDS_HIDDEN
* LOG_SENSETIVE_LOG
* LOG_SILENT
npm i kenlo-logger-winston
Este projeto tem como objetivo abstrair e padronizar a inclusão de logs nas aplicações utilizando a biblioteca Winston. Ele funciona como um orquestrador para centralizar e controlar a geração de logs em diferentes níveis, facilitando o rastreamento e a manutenção do fluxo transacional das aplicações.
* Restrição por nível de log: os logs são exibidos do nível configurado para cima.
Exemplo de hierarquia:
* DEBUG
* INFO
* WARN
* ERROR
Se configurado como WARN, serão exibidos apenas logs WARN e ERROR.
* Suporte a Decorators: possibilidade de utilizar decorators nos métodos para logar automaticamente:
* Nome da classe
* Nome do método
* Parâmetros de entrada
* Tempo de execução
* Identificação por Correlation-ID:
* Permite identificar logs de uma mesma transação.
* Pode ser atribuído via x-correlation-id no header da requisição ou gerado automaticamente com UUID.
* Interceptação automática das requisições:
* Log automático de entrada e saída via middleware do servidor.
* Formato dos logs adaptável:
* Em ambientes locais, logs são exibidos de forma legível.
* Em ambientes não-locais (dev, stg, prd), logs são formatados de maneira compacta (em uma única linha).
---
É obrigatório configurar as variáveis de ambiente:
``bash`
LOG_ENV=local | dev | stg | prd
LOG_LEVEL=debug | info | warn | error
* LOG_ENV
Define o ambiente em que o log será exibido.
Se não informado, será utilizado o formato de linha única.
* LOG_LEVELdebug
Define o nível mínimo de log a ser exibido.
Se não informado, será utilizado o nível por padrão.
* LOG_FIELDS_HIDDE
Define atributos que não devem ser apresentados no log, ex: cpf, senha, etc.
Se não informado, nenhum atributo será ocultado.
* LOG_SENSETIVE_LOGLOG_SILENT
Maskara dados sensiveis no log, ex: true | false
*
Siliciar o ingestão de logs, ex: true | false
this.winston.silent = process.env.LOG_SILENT === 'true';
* LOG_SHOW_PARAMETRS
Habilitar ingestão dos parametros ex: true | false ;
---
Para rastreamento de transações:
* Em ferramentas como Postman, envie o header:
x-correlation-id:
* Em chamadas via Axios, repasse esse header para manter a linhagem transacional entre serviços.
---
`ts
@log()
async simularSucesso(req: Request, res: Response): Promise
const body = req.body;
await this.simuladorApplication.SimularRetornoSucesso(body);
ResponseStatus(res, 200, [], 'Simulação realizado com sucesso');
}
@warn()
async SimularRetornoFalha(body: any): Promise
return await this.simuladorService.SimularRetornoFalha();
}
`
`json`
{
"level": "DEBUG",
"correlationId": "f18fb9a6-64aa-479a-b7bc-bb312069aea4",
"action": "method-trace",
"method": "SimuladorApplication.SimularRetornoSucesso",
"class": "Function",
"function": "SimularRetornoSucesso",
"parameters": [{ "email": "", "senha": "" }],
"hasFailed": false,
"duration": 4,
"message": "Called method: SimuladorApplication.SimularRetornoSucesso",
"timestamp": "2025-07-17T18:28:09.944Z"
}
`json`
{
"level": "INFO",
"correlationId": "f18fb9a6-64aa-479a-b7bc-bb312069aea4",
"action": "response",
"method": "POST",
"path": "/v1/simulacao-sucesso",
"agent": "PostmanRuntime/7.43.0",
"ip": "localhost",
"duration": 5,
"statusCode": 200,
"headers": {
"x-powered-by": "Express",
"content-type": "application/json; charset=utf-8",
"x-correlation-id": "f18fb9a6-64aa-479a-b7bc-bb312069aea4"
},
"data": "{\"resCode\":200,\"type\":\"Success\",\"message\":\"\",\"totalRow\":\"Simulação realizado com sucesso\",\"data\":[]}",
"timestamp": "2025-07-17T18:28:09.946Z"
}
---
Você também pode utilizar diretamente a classe Logger para logar eventos específicos:
`tsError: ${error instanceof Error ? error.message : 'Unknown error'}
@log()
async SimularRetornoFalha(): Promise
try {
throw new Error("Simular Retorno Falha do banco de Dados");
} catch (error) {
Logger.error();`
throw new Error('Simular Retorno Falha do banco de Dados');
}
}
`json``
{
"level": "ERROR",
"correlationId": "6561b601-da07-4074-98d2-0c394b01df36",
"error": "Simular Retorno Falha do banco de Dados",
"class": "SimulacaoController",
"message": "Falha na autenticação",
"timestamp": "2025-07-17T18:34:32.508Z"
}
---
Este repositório já contém exemplos práticos de como implementar e utilizar a biblioteca de logs em um projeto da Kenlo. Consulte os arquivos do projeto para explorar casos reais de uso com Express, Axios e Postman.
---