In a production environment, event logs must be recorded. Some companies do this by saving events to text files, while others have their own logging systems in place. This project is a plugin-based solution that stores event logs in a database and provides a front-end interface for in-server monitoring.
It works as follows: any microservice running on the server makes a POST request to the logger orchestrator microservice provided in this project whenever an important event occurs. The orchestrator then saves the information into the database and serves as a gateway to provide an interactive front-end interface for monitoring the logs.
A centralized logging system designed to collect logs from multiple independent services and display them through a user-friendly web interface. The application is ideal for internal log tracking within companies and provides both RESTful API endpoints and a responsive frontend dashboard.
This project is designed to run only on Linux systems and requires the following dependencies:
- ✅ PostgreSQL 16.4 – Ensure it's installed and running
- 🐳 Docker – Required to run the logging service container
- 🐍 Python – Required to install Prisma
⚠️ Make sure you have PostgreSQL 16.4 installed and accessible. The logger service is tested with this specific version.
.env file must be also in the /prisma directory. So if .env doesn't exist in /prisma directory:
cp .env /prisma/.env
💡 Or manually create.
SERVER_TYPE=development
DATABASE_URL=postgresql://user:password@localhost:5432/Logger
⚠️ Note: If you're running the project on a clean PostgreSQL instance (no tables created yet), run:# to check prisma pip install prisma prisma db push
to apply the schema to the database.
To reach ./docker_run.sh options:
# Help
./docker_run.sh --help
Execute commands:
# Without rebuild
sudo ./docker_run.sh
or
# With rebuild
sudo ./docker_run.sh --build
http://127.0.0.1:3005/index.html
- Collect logs from multiple services (e.g., bots, apps, scripts)
- Visualize logs in a clean web UI (
localhost:3005/index.html
) - Filter logs by service, log level, or user ID
- Create and delete services dynamically
- PostgreSQL-backed storage using Prisma ORM
- Backend: FastAPI, Prisma ORM
- Frontend: HTML + CSS + Vanilla JavaScript
- Database: PostgreSQL 16.4 (external, not containerized)
- Dev Tools: Docker, pgAdmin 9.5
- Python: 3.10.12
GET /get/service
→ List all servicesPOST /post/service
→ Register new serviceDELETE /delete/service/{service_name}
→ Delete service and its logs
GET /get/log
→ Retrieve all logs (with service name)POST /post/log
→ Add a new log entry
GET /index
→ Serves the log panel (or use/static/index.html
)
{
"service_name": "Auth-Service",
"user_id": 48,
"log_level": "ERROR",
"message": "Failed to generate JWT token due to missing secret key."}
{
"service_name": "Slack-Service",
"is_active": true
}
This project is licensed under the MIT License.
It is open-source and free to use, modify, and distribute — for both personal and commercial purposes.
Ozan Uslan
- GitHub: uslanozan
- LinkedIn: linkedin.com/in/uslanozan
- Email: uslanozan@gmail.com
Emre Mutlu
- GitHub: emremutlu99
- LinkedIn: linkedin.com/in/emre-m-0899b4111
- Email: emre.mutlu@sagel-ai.com
- Project architecture diagram
- Docker Compose support
- Dark mode toggle