API backend desenvolvida em Flask para registro e consulta de logs e eventos de aplicações, utilizando MongoDB como banco de dados.
O projeto demonstra organização em camadas, validação de dados, tratamento de erros e filtros avançados, com foco em boas práticas de desenvolvimento backend.
- Python 3.10+
- Flask
- MongoDB
- PyMongo
- python-dotenv
- Registro de logs e eventos via API REST
- Estrutura flexível de documentos (metadata dinâmica)
- Filtros por:
- nível (
level) - serviço (
service) - período (
start_date/end_date)
- nível (
- Organização em camadas (routes, services, repositories)
- Tratamento adequado de erros
- Healthcheck para monitoramento
- Índices no MongoDB para melhor performance
log-collector-api/
├── app/
│ ├── config/
│ │ └── settings.py
│ ├── db/
│ │ └── mongo.py
│ ├── repositories/
│ │ └── logs_repository.py
│ ├── routes/
│ │ ├── health_routes.py
│ │ └── logs_routes.py
│ ├── schemas/
│ │ └── log_schema.py
│ ├── services/
│ │ └── logs_service.py
│ ├── utils/
│ │ └── datetime_utils.py
│ └── __init__.py
├── .env
├── .gitignore
├── requirements.txt
├── run.py
└── README.md
Crie um arquivo .env na raiz do projeto:
MONGO_URI=mongodb://localhost:27017
SECRET_KEY=dev-secret
- Criar ambiente virtual (opcional):
python -m venv .venv
source .venv/bin/activate # Linux / Mac
.venv\Scripts\activate # Windows
- Instalar dependências:
pip install -r requirements.txt
- Executar a aplicação:
python run.py
A API estará disponível em:
http://localhost:5000
GET /health
Resposta:
{
"status": "ok"
}POST /logs
Body (JSON):
{
"level": "ERROR",
"service": "auth-service",
"message": "Token inválido",
"metadata": {
"user_id": 123
}
}Resposta:
{
"message": "Log criado com sucesso",
"id": "65a1f9e0e7b8c9d123456789"
}GET /logs
Parâmetros opcionais:
levelservicestart_date(YYYY-MM-DD)end_date(YYYY-MM-DD)
Exemplo:
GET /logs?level=ERROR&service=auth-service&start_date=2025-12-01&end_date=2025-12-31
Resposta:
[
{
"id": "65a1f9e0e7b8c9d123456789",
"level": "ERROR",
"service": "auth-service",
"message": "Token inválido",
"metadata": {
"user_id": 123
},
"created_at": "2025-12-26T13:30:00Z"
}
]- O MongoDB é utilizado pela flexibilidade de documentos, ideal para logs.
- Índices são criados automaticamente no startup para melhorar a performance das consultas.
- O projeto foi desenvolvido com foco em clareza, manutenção e boas práticas.
Gabriel Rubiali
Computer Science Student | Backend Python