Skip to main content

Non-blocking HTTP handler for Python `logging` with local SQLite buffer/cache.

Project description

Asynchronous HTTP Logging

Non-blocking HTTP handler for Python logging with local SQLite buffer/cache.

This library was written for Hackt CLI and open sourced for anyone interested.

Test Coverage PyPI License Requirements Status Code Style Code Formatter Test Framework

Documentation

Please refer to the project Wiki.

Installation

Virtual environment is highly recommended.

pip install http_logging

Basic usage

import logging
from http_logging import AsyncHttpHandler

logger = logging.getLogger()
logger.addHandler(AsyncHttpHandler(
    host='your-domain.com',
    port=443,  # Optional, defaults to 80 (HTTP) or 443 (HTTPS/TLS enabled)
    path='/my-logs',  # Appended to the host (i.e. your-domain.com/app-logs)
    ssl_enable=True,  # Default: True, may set to False on a dev environment
    ssl_verify=True,  # Default: True, may set to False on a dev environment
    database_path='local-cache-logs.db',  # SQLite DB filepath to cache logs
))

logger.info('Some useful information...')
logger.error('Ooops!')

These log messages are cached in a local SQLite database and periodically delivered (asynchronously, in a separate thread) to your host in a POST request with a body similar to this one:

[
    {
        "type": "async-http-logging",
        "created": 1610393068.365492,
        "relative_created": 1505.5122375488281,
        "message": "Some useful information...",
        "level": {
            "number": 20,
            "name": "INFO"
        },
        "sourcecode": {
            "pathname": "/path/to/your/python/script.py",
            "function": "function_name",
            "line": 123
        },
        "process": {
            "id": 1234,
            "name": "MainProcess"
        },
        "thread": {
            "id": 1234567890,
            "name": "MainThread"
        }
    },
    {
        "type": "async-http-logging",
        "created": 1610393068.3663092,
        "relative_created": 1506.3292980194092,
        "message": "Ooops!",
        "level": {
            "number": 40,
            "name": "ERROR"
        },
        "sourcecode": {
            "pathname": "/path/to/your/python/script.py",
            "function": "function_name",
            "line": 456
        },
        "process": {
            "id": 1234,
            "name": "MainProcess"
        },
        "thread": {
            "id": 1234567890,
            "name": "MainThread"
        }
    }
]

In your backend, you can funnel these logs to wherever suits you best: database, ElasticSearch index, third-party monitoring service, etc.

Learn more about these and other features in the project Wiki.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

http_logging-0.1.0-py3-none-any.whl (9.4 kB view hashes)

Uploaded py3

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