Skip to main content

A lightweight Django app for viewing and managing log data conveniently

Project description

Downloads PyPI Version linting License: MIT

Django Log Lens is a dependency free, lightweight and easy-to-use logging app for Django. It provides an interface to view, download and supervise logs. Furthermore, it allows clients to send console logs to the server - out of the box, working with any frontend framework just by adding a single line of code to include the required script. Want to try it out? →Get started!

Core Features

Overview of Accessible Handlers and the Corresponding Log Files

Log Lens Handler Overview


Syntax-highlighted Logs in Your Browser

Log File Demo


Fast Navigation through Log Files

Log File Navigation Demo


Fast Navigation through Source Code

  • Click on a path in the log message to copy it to the clipboard
  • Click on the button to open the referenced line in VS Code
  • Adjust the Path Splitter and the Path Prefix to match your project structure

Navigate through Source Code

Example:

Say, the remote project root is /web/my-project (as in the example above) and your local project root is /home/user/MY-PROJECT.

  • Set the Path Prefix to /home/user/MY-PROJECT
  • Set the Path Splitter to /my-project

→ Now, by clicking on the path
/web/my-project/django/dvenv/lib/python3.10/site-packages/django/http/request.py:151,
/home/user/MY-PROJECT/django/dvenv/lib/python3.10/site-packages/django/http/request.py:151
will be opened by VS Code instead.

Client Logging

Allows clients to send console logs to the server.

<!DOCTYPE html>
<html>
  ...
  <body>
    {% csrf_token %} 
    <!-- it's not necessary to render the CSRF token more than once,
    so if you use it anywhere in your template, you can skip the line above -->
    {% include 'js-logger.html' %}
    <!-- include the script to send console logs to the server.
    It will simply override the console methods (debug, info, warn...) in a
    way they behave the same as before but also send the logs to the server.
    Thus, the script does not interfere with your frontend framework and
    can be used out-of-the-box. --> 
    ...
  </body>
  <script>
    throw new Error("Hello, Django Log Lens!");
    /* You will find this error, including its stack trace, in a log file
    if you configured django log lens as described below. */
  </script>
</html>

Getting Started

1. Install django-log-lens from PyPI

pip install django-log-lens

2. Add django_log_lens to your INSTALLED_APPS

# file: settings.py

INSTALLED_APPS = [
    'django_log_lens',
    ...
]

3. Add URL patterns to your urls.py

# file: urls.py
from django.urls import include

urlpatterns = [
    path('logs/', include('django_log_lens.urls')),
    ...
]

4. Add a LOGGING configuration in your settings.py

Follow the instructions from the official Django documentation to configure the logging system or use the example below.

# file: settings.py
from django_log_lens import LOG_FORMAT

LOG_FOLDER = BASE_DIR / "logs"

if not os.path.exists(LOG_FOLDER):
    os.makedirs(LOG_FOLDER)

LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,
    "formatters": {"default": {"format": LOG_FORMAT}},
    "handlers": {
        "log_collector": {
            "level": "WARNING",
            "class": "logging.FileHandler",
            "filename": str(LOG_FOLDER / "collector.log"),
            "formatter": "default",
        },
        "client_logger": {
            "level": "DEBUG",
            "class": "logging.FileHandler",
            "filename": str(LOG_FOLDER / "client.log"),
            "formatter": "default",
        },
    },
    "loggers": {
        "django_log_lens.client": {"handlers": ["client_logger"], "level": "DEBUG", "propagate": True},
        "django" : {"handlers": ["log_collector"], "level": "DEBUG", "propagate": True},
    }
}

ALLOW_JS_LOGGING = True  # django_log_lens setting: allows clients to send console logs to the server

5. Visit Log Lens

You can now visit Django Log Lens by navigating to {% url 'django_log_lens:view' %} (code for your template) - if you configured the URL pattern as shown above, this would be logs/view

Third Party Licenses

This project uses the Dracula theme by Zeno Rocha which is licensed under the MIT License

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-log-lens-0.1.10.post1.tar.gz (36.7 kB view hashes)

Uploaded Source

Supported by

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