Add comprehensive README file describing the Web Tail Pro project including: - Features and architecture overview - Project structure and prerequisites - Build and execution instructions - Development setup and available endpoints
100 lines
2.7 KiB
Markdown
100 lines
2.7 KiB
Markdown
# Web Tail Pro
|
|
|
|
Visualizador de logs em tempo real no navegador, com backend em Go e frontend em React. Permite acompanhar múltiplos arquivos simultaneamente, filtrar linhas, aplicar formatações (JSON e Apache), e mesclar logs por timestamp em um painel unificado. Autenticação básica (HTTP Basic Auth) opcional.
|
|
|
|
## Recursos
|
|
- Monitoramento em tempo real via SSE (`/logs`)
|
|
- Múltiplas abas, uma por arquivo de log, e painel "Mesclado"
|
|
- Filtro de texto simples nas abas
|
|
- Formatação de linhas para `generic`, `json` e `apache`
|
|
- Autenticação básica com usuário fixo `admin` e senha definida por flag
|
|
|
|
## Arquitetura
|
|
- **Backend (Go 1.21+)**: realiza `tail` dos arquivos e publica eventos via SSE. Serve os arquivos do frontend com `go:embed`.
|
|
- **Frontend (React + Vite + Ant Design)**: consome SSE, organiza abas e renderiza as linhas de log com formatação.
|
|
|
|
Estrutura do projeto:
|
|
|
|
```
|
|
backend/
|
|
main.go
|
|
go.mod
|
|
frontend/
|
|
src/
|
|
App.tsx
|
|
components/
|
|
hooks/
|
|
package.json
|
|
vite.config.ts
|
|
build.sh
|
|
```
|
|
|
|
## Pré-requisitos
|
|
- Go 1.21+
|
|
- Node.js 18+ e npm
|
|
|
|
## Build
|
|
|
|
Opção 1 (Unix/WSL/Git Bash):
|
|
|
|
```
|
|
bash build.sh
|
|
```
|
|
|
|
Opção 2 (manual, multiplataforma):
|
|
|
|
```
|
|
cd frontend
|
|
npm install
|
|
npm run build
|
|
cd ..
|
|
go build -o web-tail-pro ./backend/main.go
|
|
```
|
|
|
|
## Execução
|
|
|
|
Exemplos de uso do binário gerado:
|
|
|
|
```
|
|
./web-tail-pro backend/logs/app.log backend/logs/access.log backend/logs/json.log
|
|
./web-tail-pro -port :9090 -password "s3nh4" backend/logs/*.log
|
|
./web-tail-pro -password "s3nh4" backend/logs/app.log
|
|
./web-tail-pro -port 1234 backend/logs/*.log
|
|
```
|
|
|
|
Após iniciar, acesse `http://localhost:8080` (ou a porta configurada).
|
|
|
|
### Flags disponíveis
|
|
- `-port` (padrão `:8080`): porta/endereço para o servidor HTTP. Aceita formatos como `:8080` ou `9090`.
|
|
- `-password` (padrão vazio): ao definir uma senha, ativa autenticação básica (usuário `admin`).
|
|
|
|
### Autenticação
|
|
- Usuário: `admin`
|
|
- Senha: valor definido em `-password`
|
|
- Sem `-password`, o acesso é liberado.
|
|
|
|
## Desenvolvimento
|
|
|
|
Executar backend em modo desenvolvimento:
|
|
|
|
```
|
|
go run ./backend/main.go backend/logs/*.log
|
|
```
|
|
|
|
Executar frontend com Vite (proxy para o backend):
|
|
|
|
```
|
|
cd frontend
|
|
npm run dev
|
|
```
|
|
|
|
- Frontend dev: `http://localhost:5173`
|
|
- Proxy configurado para `/api` e `/logs` direcionar para `http://localhost:8080` (ajuste a porta se necessário).
|
|
|
|
## Endpoints
|
|
- `GET /api/files`: retorna a lista de arquivos de log que o backend está monitorando.
|
|
- `SSE /logs`: stream de eventos com linhas de log (`filename`, `line`, `timestamp`).
|
|
|
|
## Observações
|
|
- O buffer no frontend mantém aproximadamente as últimas 2000 linhas por conexão SSE.
|
|
- O painel "Mesclado" ordena por `timestamp` (quando disponível) para facilitar correlação entre arquivos. |