kenlo-logger-winston
v1.0.5
Published
Kenlo library for centralized logging
Readme
Envs Logger
- LOG_ENV
- LOG_LEVEL
- LOG_FIELDS_HIDDEN
- LOG_SENSETIVE_LOG
- LOG_SILENT
Instalação Logger
npm i kenlo-logger-winston
📦 Projeto de Abstração de Logs com 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.
✅ Requisitos Atendidos
Restrição por nível de log: os logs são exibidos do nível configurado para cima. Exemplo de hierarquia:
DEBUGINFOWARNERROR
Se configurado como
WARN, serão exibidos apenas logsWARNeERROR.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-idno 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).
⚙️ Configuração
É obrigatório configurar as variáveis de ambiente:
LOG_ENV=local | dev | stg | prd
LOG_LEVEL=debug | info | warn | errorLOG_ENVDefine o ambiente em que o log será exibido. Se não informado, será utilizado o formato de linha única.LOG_LEVELDefine o nível mínimo de log a ser exibido. Se não informado, será utilizado o níveldebugpor padrão.LOG_FIELDS_HIDDEDefine atributos que não devem ser apresentados no log, ex: cpf, senha, etc. Se não informado, nenhum atributo será ocultado.LOG_SENSETIVE_LOGMaskara dados sensiveis no log, ex: true | falseLOG_SILENTSiliciar o ingestão de logs, ex: true | false this.winston.silent = process.env.LOG_SILENT === 'true';LOG_SHOW_PARAMETRSHabilitar ingestão dos parametros ex: true | false ;
🔗 Correlation ID
Para rastreamento de transações:
- Em ferramentas como Postman, envie o header:
x-correlation-id: <UUID> - Em chamadas via Axios, repasse esse header para manter a linhagem transacional entre serviços.
💡 Exemplo de Uso
Uso de Decorators
@log()
async simularSucesso(req: Request, res: Response): Promise<void> {
const body = req.body;
await this.simuladorApplication.SimularRetornoSucesso(body);
ResponseStatus(res, 200, [], 'Simulação realizado com sucesso');
}
@warn()
async SimularRetornoFalha(body: any): Promise<any> {
return await this.simuladorService.SimularRetornoFalha();
}Saída esperada (via @log())
{
"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"
}Log automático da requisição (entrada e saída)
{
"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"
}❗ Log Manual com Logger
Você também pode utilizar diretamente a classe Logger para logar eventos específicos:
@log()
async SimularRetornoFalha(): Promise<any> {
try {
throw new Error("Simular Retorno Falha do banco de Dados");
} catch (error) {
Logger.error(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
throw new Error('Simular Retorno Falha do banco de Dados');
}
}Saída esperada
{
"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"
}🚪 Projeto de Referência
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.
