lo99er
v1.0.8
Published
A log library integrate with elasticsearch
Maintainers
Readme
Lo99er
Lo99er é uma biblioteca npm para captura de logs de aplicações Node.js e envio direto para o Elasticsearch.
O objetivo é centralizar eventos de info, success, warn e error em um índice único para facilitar a montagem de dashboards, busca e observabilidade dos serviços que consumirem o pacote.
Arquitetura
Fluxo principal
- A aplicação consumidora chama
info,success,warnouerror. - A biblioteca monta um objeto de log com:
service_nameservice_versionappKeymessageroutedataheadertimestampseverity
- O log é enviado ao Elasticsearch.
- O documento é indexado em
search-logs.
Integrações
- Elasticsearch 8.x
- Variáveis de ambiente carregadas por
dotenv
Funcionalidades
info(data): registra logs informativos.success(data): registra logs de sucesso.warn(data): registra logs de alerta.error(data): registra logs de erro.- Persistência automática no Elasticsearch.
- Inclusão automática de
timestampeseverity.
Requisitos
- Configurar conexão com Elasticsearch via variáveis de ambiente.
- Disponibilizar
LO99ER_SERVICE_NAME,LO99ER_SERVICE_VERSION,LO99ER_APP_KEY,LO99ER_ELASTIC_SERVER,LO99ER_ELASTIC_USEReLO99ER_ELASTIC_PHRASE. - Manter compatibilidade com aplicações Node.js que consumam CommonJS.
Operacionais
- O Elasticsearch precisa estar acessível a partir da aplicação consumidora.
- O índice
search-logsdeve existir ou aceitar criação automática no ambiente.
Regras de Negócio
- Toda chamada grava o log no Elasticsearch antes de retornar o objeto criado.
- O campo
severityé definido pela biblioteca e não pelo consumidor. - O campo
timestampé gerado internamente comnew Date().getTime(). - O documento final é ajustado para usar
@timestampantes do envio. - Falhas de persistência são tratadas com
catch, mas não há retentativa explícita. - A biblioteca usa o mesmo client de Elasticsearch compartilhado entre as chamadas.
Como usar
Instalação
npm install lo99erConfiguração
Crie um arquivo .env no projeto consumidor:
LO99ER_SERVICE_NAME=meu-servico
LO99ER_SERVICE_VERSION=1.0.0
LO99ER_APP_KEY=chave-do-servico
LO99ER_ELASTIC_SERVER=https://localhost:9200
LO99ER_ELASTIC_USER=elastic
LO99ER_ELASTIC_PHRASE=minha-senhaExemplo de uso
const logger = require('lo99er');
async function executar() {
await logger.info({
message: 'Requisição recebida',
route: '/orders',
data: JSON.stringify({ orderId: 123 }),
header: JSON.stringify({ 'x-request-id': 'abc-123' })
});
}
executar();Observação
Este projeto não expõe endpoints HTTP nem rotas de frontend. Ele funciona como biblioteca de logging para aplicações Node.js.
