Управление и анализ логов через REST API.
Поддержка аутентификации, фильтрации, статистики и очистки старых записей.
pip install -r requirements.txtСоздай файл .env на основе шаблона:
cp .env.example .envЗаполни значения (например, SECRET_KEY можно сгенерировать через openssl rand -hex 32).
uvicorn app.main:app --reloadСервер запустится на http://localhost:8000.
Запусти юнит-тесты:
pytest -vPOST /auth/register
Content-Type: application/json
{
"username": "testuser",
"password": "securepass123"
}POST /auth/login
Content-Type: application/json
{
"username": "testuser",
"password": "securepass123"
}→ Возвращает access_token.
POST /add_log
Authorization: Bearer <токен>
Content-Type: application/json
{
"timestamp": "2025-05-14T12:00:00Z",
"level": "INFO",
"service": "auth_service",
"message": "User logged in",
"metadata": {
"user_id": 1,
"ip": "192.168.1.1"
}
}GET /logs?level=ERROR&start_time=2025-05-14T00:00:00Z&end_time=2025-05-15T00:00:00Z&limit=10&offset=0
Authorization: Bearer <токен>Ответ:
{
"logs": [
{
"id": 1,
"timestamp": "2025-05-14T12:00:00Z",
"level": "ERROR",
"service": "db_service",
"message": "Connection timeout",
"metadata": {
"host": "192.168.1.10",
"port": 5432
}
}
],
"total": 1
}GET /stats?group_by=level
Authorization: Bearer <токен>Ответ:
{
"stats": [
{ "level": "ERROR", "count": 1 },
{ "level": "INFO", "count": 5 }
]
}DELETE /logs?before=2025-05-14T00:00:00Z
Authorization: Bearer <токен_админа>Ответ:
{
"deleted": 500
}Только пользователь с именем
adminможет удалять логи.
Собери образ:
docker build -t log-analyzer .Запусти контейнер:
docker run -p 8000:8000 log-analyzerlog_analyzer/
├── app/ # Ядро приложения
│ ├── api/ # Роутеры
│ ├── core/ # Безопасность, JWT
│ ├── crud/ # Операции с БД
│ ├── models/ # Pydantic-схемы
│ ├── schemas/ # SQLAlchemy-модели
│ └── main.py # Точка входа
├── tests/ # Юнит-тесты
├── alembic/ # Миграции
├── logs/ # Файл логов (автоматически создаётся)
├── .env.example # Шаблон переменных окружения
├── requirements.txt # Зависимости
└── README.md # Этот файл
MIT - свободное использование и распространение.