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

log_handler = AsyncHttpHandler(host='your-domain.com')

logger = logging.getLogger()
logger.addHandler(log_handler)

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.2-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file http_logging-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: http_logging-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.1.1 requests-toolbelt/0.9.1 tqdm/4.55.2 CPython/3.8.2

File hashes

Hashes for http_logging-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6a48e27a7990a2701b5cd2a39e3e4904e87294f8c29b8b5856a3e60c3ad54c1e
MD5 b29a70bac0cd4c8bf6fac19fe2941d47
BLAKE2b-256 710b5b141072670b2a6cdade9826dcf4a458e563ba4fcce4dfeb2ab3da76cc9d

See more details on using hashes here.

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