npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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:

    • 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).

⚙️ Configuração

É obrigatório configurar as variáveis de ambiente:

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_LEVEL Define o nível mínimo de log a ser exibido. Se não informado, será utilizado o nível debug 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_LOG Maskara dados sensiveis no log, ex: true | false

  • LOG_SILENT 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 ;


🔗 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.