Findme-logger é uma biblioteca que fornece middlewares de acesso de requisição e erros para consoles da aplicação, de forma personalizada e configurável. Para sua construção foi utilizado: winston, express-winston e winston-loki.
Para instalar a biblioteca, basta rodar no diretório raiz da aplicação desejada o seguinte comando:
$ npm i findme-logger
Para compilar o código fonte em typescript, rodar o seguindo comando no diretório raiz do repositório:
$ npm run compile
Após rodar o comando, será gerado um novo diretório "dist" contendo os arquivos do código fonte compilados para javascript.
Para subir a versão atual para o NPM, rodar o seguinte comando no diretório raiz do repositório:
$ npm run deploy
Para rodar os testes no repositório, rodar o seguinte comando no diretório raiz:
$ npm run test
Para configurar a integração do package com o Loki corretamente, será necessário incluir as seguintes variáveis de ambiente em seu projeto:
LOKI_ENABLED=false # Habilitar ou desabilitar o Loki
LOKI_ENV_TO_SEND="production, staging, sandbox" # Variáveis de ambiente onde será necessário enviar logs para o Loki
LOKI_HOST="http://example.com/1234" # Loki Host URL
LOKI_BASIC_AUTH="12345" # Loki Basic Auth Hash
LOKI_LABEL_JOB="cloud-run" # Loki Job Label
LOKI_LABEL_APP="service-demand" # Loki App Label
LOKI_LABEL_ENV="sandbox" # Loki Env Label
LOKI_INTERVAL=5 # Loki Interval
Para habilitar a geração do arquivo .log ao ser disparado os middlewares, será necessário inserir as seguintes variáveis de ambiente em seu projeto:
LOG_FILE_ENABLED="true" # Ativa ou desativa a criação do arquivo .log quando o usuário disparar um middleware
LOG_FILE_PATH="./logs/console.log" # Caminho que será criado o arquivo.log (opcional)
Para habilitar o log de requisições no console da aplicação ao ser disparado os middlewares, será necessário inserir a seguinte variável de ambiente em seu projeto:
CONSOLE_ENABLED="true"
Para configurar o filtro de dados inseridos no layout do logger, será necessário alterar as seguintes variáveis de ambiente em seu projeto:
LOG_IGNORED_ROUTES="/favicon.ico, /hello" # Rotas da aplicação que serão ignoradas no middleware de acesso
LOG_HEADER_BLACK_LIST="authorization, cookie" # Atributos do header que serão ignorados nos dados logados do middleware de acesso
LOG_BODY_BLACK_LIST="rows, attachments" # Atributos do body que serão ignorados nos dados logados do middleware de acesso
Para inicializar o middleware logger junto à aplicação, terá que inserir sua instância no arquivo server.(js|ts), antes da definição das rotas do servidor:
import { loggerMiddleware } from "findme-logger";
import express from 'express';
import routes from "./routes";
const server = express();
server.use(loggerMiddleware);
server.use(routes);
Para inicializar o middleware error junto à aplicação, terá que inserir sua instância no arquivo server.(js|ts), após a definição das rotas do servidor:
import { errorLoggerMiddleware } from "findme-logger";
import express from 'express';
import routes from "./routes";
const server = express();
server.use(routes);
server.use(errorLoggerMiddleware);
Para disparar um logger manual, basta importar a instância do loggerFactory em qualquer arquivo e utilizá-lo:
import { loggerFactory } from "findme-logger";
const logger = loggerFactory();
logger.info("Este é um log de informação!");
logger.error("Este é um log de erro!");