Skip to main content

A beautiful, real-time log viewer with a web UI. Works with Django, Flask, and FastAPI.

Project description

python-log-viewer

A beautiful, real-time log viewer with a dark-themed web UI. Browse, search, filter, clear, and delete log files — all from your browser.

Integrates seamlessly with Django, Flask, and FastAPI.

Log Viewer Preview


Features

  • 📁 File browser — sidebar with folder tree, file sizes
  • 🔍 Search & filter — full-text search, log-level filtering (DEBUG / INFO / WARNING / ERROR)
  • 🎨 Colour-coded — log levels highlighted with subtle background colours
  • 🔄 Auto-refresh — configurable live-tail (5s, 10s, 30s, 1m, or manual)
  • 📜 Line limits — last 500 / 1000 / 2500 / 5000 / all entries
  • 🗑️ File actions — clear (truncate) or delete log files with confirmation modals
  • 🔒 Basic Auth — optional HTTP Basic Authentication
  • 📱 Responsive — works on mobile with a slide-out sidebar

Installation

pip install python-log-viewer

Framework extras

pip install python-log-viewer[django]    # Django integration
pip install python-log-viewer[flask]     # Flask integration
pip install python-log-viewer[fastapi]   # FastAPI integration
pip install python-log-viewer[all]       # All frameworks

Django Integration

1. Install

pip install python-log-viewer[django]

2. Add to INSTALLED_APPS

INSTALLED_APPS = [
    # ...
    "python_log_viewer.contrib.django",
]

3. Include URLs

# urls.py
from django.urls import path, include

urlpatterns = [
    # ...
    path("logs/", include("python_log_viewer.contrib.django.urls")),
]

4. Configure (optional)

Add any of these to your settings.py:

# Path to your log directory (default: BASE_DIR / "logs")
LOG_VIEWER_DIR = BASE_DIR / "logs"

# UI defaults
LOG_VIEWER_AUTO_REFRESH  = True    # enable auto-refresh
LOG_VIEWER_REFRESH_TIMER = 5000    # refresh interval in ms
LOG_VIEWER_AUTO_SCROLL   = True    # auto-scroll to bottom
LOG_VIEWER_COLORIZE      = True    # colour-coded log levels

# Authentication (optional — leave unset to disable)
LOG_VIEWER_USERNAME = "admin"
LOG_VIEWER_PASSWORD = "secret"

# Allow logged-in Django superusers to bypass Basic Auth (default: True)
LOG_VIEWER_SUPERUSER_ACCESS = True

Then visit http://localhost:8000/logs/ in your browser.


Flask Integration

1. Install

pip install python-log-viewer[flask]

2. Register the blueprint

from flask import Flask
from python_log_viewer.contrib.flask import create_log_viewer_blueprint

app = Flask(__name__)

app.register_blueprint(
    create_log_viewer_blueprint(
        log_dir="./logs",
        url_prefix="/logs",
        username="admin",      # optional
        password="secret",     # optional
    )
)

if __name__ == "__main__":
    app.run(debug=True)

Then visit http://localhost:5000/logs/ in your browser.

Blueprint parameters:

Parameter Default Description
log_dir "./logs" Path to log directory
url_prefix "/logs" URL prefix
username None Basic-Auth username
password None Basic-Auth password
auto_refresh True Enable auto-refresh
refresh_timer 5000 Refresh interval (ms)
auto_scroll True Auto-scroll to bottom
colorize True Colour-coded levels

FastAPI Integration

1. Install

pip install python-log-viewer[fastapi]

2. Include the router

from fastapi import FastAPI
from python_log_viewer.contrib.fastapi import create_log_viewer_router

app = FastAPI()

app.include_router(
    create_log_viewer_router(
        log_dir="./logs",
        prefix="/logs",
        username="admin",      # optional
        password="secret",     # optional
    )
)

Then visit http://localhost:8000/logs/ in your browser.

Router parameters:

Parameter Default Description
log_dir "./logs" Path to log directory
prefix "/logs" URL prefix
username None Basic-Auth username
password None Basic-Auth password
auto_refresh True Enable auto-refresh
refresh_timer 5000 Refresh interval (ms)
auto_scroll True Auto-scroll to bottom
colorize True Colour-coded levels

Using the Core API Directly

The core classes have zero dependencies and can be used in any Python application:

from python_log_viewer.core import LogDirectory, LogReader

# Point to your log directory
log_dir = LogDirectory("/var/log/myapp")

# List all files
for f in log_dir.list_files():
    print(f"{f.name}  {f.size} bytes  modified={f.modified}")

# Read and filter log entries
reader = LogReader(log_dir)
result = reader.read(
    file="app.log",
    lines=100,
    level="ERROR",
    search="database",
)
print(f"Total matching entries: {result['total']}")
for line in result["lines"]:
    print(line)

# File operations
log_dir.clear_file("app.log")    # truncate to 0 bytes
log_dir.delete_file("old.log")   # permanently remove

Environment Variables

Configuration can be set via environment variables (useful for Docker / CI):

Variable Description
LOG_VIEWER_USERNAME Basic-Auth username
LOG_VIEWER_PASSWORD Basic-Auth password

Development

# Clone
git clone https://github.com/imsujan276/python-log-viewer.git
cd python-log-viewer

# Install in editable mode
pip install -e ".[all]"

License

MIT

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

python_log_viewer-0.1.0.tar.gz (16.2 kB view details)

Uploaded Source

Built Distribution

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

python_log_viewer-0.1.0-py3-none-any.whl (19.4 kB view details)

Uploaded Python 3

File details

Details for the file python_log_viewer-0.1.0.tar.gz.

File metadata

  • Download URL: python_log_viewer-0.1.0.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for python_log_viewer-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2caca16d211073cc2d24102ee48506f8dc746c75e869fb695ff33de184ad6804
MD5 d5e5a8b13f66118bfd951d2c7c22bc90
BLAKE2b-256 a446ef6626ed53439af4da581e63fccdf02f3acebfb12d285b9b9d0aca803301

See more details on using hashes here.

File details

Details for the file python_log_viewer-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for python_log_viewer-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eff2770ff0e4de5d0504e69da060d9dadc943d3e662fa51f37232f576b006975
MD5 1c21fa9c03cd84c8e172e78677182625
BLAKE2b-256 ba627244ef56e85d11cee5c4df41ce6b77f3929996581b37bd98e986956da305

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