Skip to main content

A standalone Django package to stream logs over WebSockets.

Project description

Django Live Logs

A lightweight, zero-configuration package that streams your Django server logs directly to a beautiful, real-time web dashboard using WebSockets and Redis.

Django Live Logs Dashboard (Imagine a beautiful dark-mode dashboard here)

Features

  • 🚀 Real-Time Streaming: Uses Django Channels and Redis to push logs instantly.
  • 🎨 Built-In Dashboard: Comes with a sleek, dark-mode Tailwind CSS interface out of the box.
  • 🛡️ Secure by Default: Dashboard and WebSockets are natively protected by Django's @staff_member_required and Session cookies.
  • 🧵 Non-Blocking: Dispatches logs in a background thread to prevent ASGI async event loop collisions.
  • 🔍 Filtering: Instantly filter between INFO, WARNING, and ERROR logs.

1. Installation

Install the package via pip:

pip install django-live-logs

Note: This package requires channels and channels-redis to be installed and configured in your project.

2. Configuration

Step A: Update settings.py

Add the package to your installed apps:

INSTALLED_APPS = [
    # ...
    'django_live_logs',
]

Configure your LOGGING dictionary to catch everything (the root logger) and send it to the WebSocket handler:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {'class': 'logging.StreamHandler'},
        'websocket': {'class': 'django_live_logs.handlers.WebSocketLogHandler'},
    },
    'root': {
        'handlers': ['console', 'websocket'],
        'level': 'INFO',
    },
    'loggers': {
        'django': {
            'handlers': ['console', 'websocket'],
            'level': 'INFO',
            'propagate': False,
        }
    },
}

Step B: Route the Dashboard (HTTP)

In your main urls.py, include the dashboard URL:

from django.urls import path, include

urlpatterns = [
    # ...
    path('live-logs/', include('django_live_logs.urls')),
]

Step C: Route the WebSockets (ASGI)

In your asgi.py, make sure your WebSockets are wrapped in Django's AuthMiddlewareStack so it can read your admin session cookies securely. Then include the routing:

from channels.auth import AuthMiddlewareStack
import django_live_logs.routing

application = ProtocolTypeRouter({
    "http": get_asgi_application(),
    "websocket": AllowedHostsOriginValidator(
        AuthMiddlewareStack(
            URLRouter(
                # Your existing websocket routes + Live Logs routes
                your_app_routing.websocket_urlpatterns + 
                django_live_logs.routing.websocket_urlpatterns
            )
        )
    ),
})

3. Usage

  1. Log into your standard Django Admin panel (e.g., /admin/).
  2. Navigate to /live-logs/ in your browser.
  3. Click Connect.
  4. Watch your server logs flow in real-time!

How it Works

The custom WebSocketLogHandler intercepts Python logs. Instead of blocking the main thread, it tosses the log payload to a daemon thread. The daemon thread safely uses async_to_sync to dispatch the JSON payload to the Redis Channel Layer. Finally, the Django Channels WebSocket consumer securely beams it to the authenticated frontend UI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_live_logs-0.1.1.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_live_logs-0.1.1-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file django_live_logs-0.1.1.tar.gz.

File metadata

  • Download URL: django_live_logs-0.1.1.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for django_live_logs-0.1.1.tar.gz
Algorithm Hash digest
SHA256 df7a9f737064b86c37b0977a1f5352d75ce73a6eb491a8744d403c807b1d1b74
MD5 d9ef4d01a3157ac2f5478a016d562813
BLAKE2b-256 d82c2d87b95330d3afb1ab26877466198c746f18ad97835005e1f50de6d14fab

See more details on using hashes here.

File details

Details for the file django_live_logs-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for django_live_logs-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b59b8e4d9b6b8fb58f4b9d6fbc3562a4f156b79a2c63e2d95ba562f9946d622a
MD5 9f3243823fec96700929871f746d69ab
BLAKE2b-256 b8d09265afa7b8ce6e9caa023288ccad1555b97698341a3c6ad90ea1e8d5fc53

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page