Skip to content

About

Analisador de Logs em C++17 — CLI, filtros, estatísticas, benchmark e documentação

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

Analisador de Logs (Log Analyzer)

Projeto intermediário em C++17 para análise eficiente de ficheiros de log grandes.

Todo o código-fonte (identificadores, comentários e mensagens) está em português, com excepção das palavras reservadas da linguagem e dos nomes de níveis de log (INFO, WARNING, ERROR, DEBUG).

Funcionalidades

Função Descrição
Leitura de ficheiros std::filesystem + streams com buffer
Parsing de linhas Vários formatos via std::regex + string_view
Níveis DEBUG, INFO, WARNING, ERROR
Contagem de erros Estatísticas agregadas
Padrões Normalização de IDs/números e top-N frequentes
Filtros por data --desde / --ate (chrono)
Filtros por severidade --nivel / --min-nivel
Pesquisa textual Substring e/ou regex
Exportação Relatórios txt, csv e json
Estratégias de I/O linha-a-linha · buffer completo · blocos

Capturas

Arquitetura

Arquitetura

Fluxo de processamento

Fluxo

Níveis suportados

Níveis

Exemplo de CLI

CLI

Benchmark (50 000 linhas)

Benchmark

Requisitos C++ utilizados

  • std::filesystem
  • std::regex
  • std::string_view
  • std::unordered_map
  • <algorithm> (copy_if, partial_sort, transform, …)
  • std::chrono
  • streams (ifstream / ofstream)
  • tratamento de excepções tipadas

Build

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
ctest --test-dir build --output-on-failure

Binários:

  • build/analisador_logs — aplicação CLI
  • build/teste_analisador — testes do parser/filtros/leitura
  • build/benchmark_leitura — comparação de estratégias

CLI

./build/analisador_logs ajuda

./build/analisador_logs analisar exemplos/aplicacao.log --nivel ERROR
./build/analisador_logs pesquisar exemplos/aplicacao.log --texto timeout --desde 2024-01-15
./build/analisador_logs estatisticas exemplos/aplicacao.log --estrategia blocos
./build/analisador_logs exportar exemplos/aplicacao.log --formato json --saida dados/relatorio.json

Opções principais

Opção Efeito
--nivel INFO|WARNING|ERROR|DEBUG Filtro exacto
--min-nivel <NIVEL> Severidade mínima
--desde / --ate Intervalo de datas YYYY-MM-DD
--texto Pesquisa substring (case-insensitive)
--regex Expressão regular
--estrategia linha|buffer|blocos Estratégia de leitura
--formato txt|csv|json Formato de exportação
--saida <caminho> Destino do relatório
--limite N Limitar linhas mostradas

Processamento de ficheiros grandes

Três estratégias comparáveis via benchmark:

  1. linha-a-linha — getline + buffer de 1 MiB (menor pico de RAM)
  2. buffer-completo — ficheiro inteiro em memória + partição por string_view
  3. blocos — leitura em blocos de 4 MiB (compromisso memória/velocidade)
./build/benchmark_leitura 200000

Estrutura

LogAnalyzer/
├── CMakeLists.txt
├── include/analisador/     # biblioteca header-only
├── src/principal.cpp
├── testes/
├── benchmarks/
├── exemplos/aplicacao.log
├── docs/imagens/
└── dados/

Documentação adicional: docs/ARQUITETURA.md · docs/GUIA_UTILIZADOR.md

Licença

MIT — ver LICENSE.

About

Analisador de Logs em C++17 — CLI, filtros, estatísticas, benchmark e documentação

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages