Skip to main content

Asynchronous log for python logging.

Project description

asynclog

Build Status Coverage Status

asynclog provide the asynchronous way for python logging. Leave the logging I/O(especially the network I/O when we want to logging to a network endpoint) to the asynchronous thread or asynchronous task provided by celery .

Requirements

  • Python 3.5+

Install

pip install asynclog

Usage

  • Config from dict
log_cfg = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'simple': {
            'format': '%(asctime)s \n %(levelname)s \n %(message)s'
        },
    },
    'handlers': {
        'async_handler': {
            'level': 'INFO',
            'formatter': 'simple',
            'class': 'asynclog.AsyncLogDispatcher',
            'func': '[Dot_Path_To_Your_Func]',
        }
    },
    'loggers': {
        'asynclogger': {
            'handlers': ['async_handler', ],
            'level': 'DEBUG',
            'propagate': False,
        },
    }
}

logging.config.dictConfig(log_cfg)
logger = logging.getLogger('asynclogger')
logger.info('Test asynclog')
  • Using thread
import logging
import time

from asynclog import AsyncLogDispatcher


def write_log(msg):
    # Do write stuff, such as write log msg into network.
    # ...
    time.sleep(0.5)


logger = logging.getLogger()
logger.setLevel(logging.INFO)
handler = AsyncLogDispatcher(write_log)
handler.setLevel(logging.INFO)
logger.addHandler(handler)

logger.info('Test Log')
  • Using Celery
from celery import shared_task

@shared_task
def write_task(msg):
    # Write log in Network IO
    print(msg)

celery_handler = AsyncLogDispatcher(write_task, use_thread=False, use_celery=True)
celery_handler.setLevel(logging.INFO)
logger.addHandler(celery_handler)

logger.info('Test Log')

Test

python3 -m unittest
......
----------------------------------------------------------------------
Ran 6 tests in 0.007s

OK

Project details


Download files

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

Files for asynclog, version 0.1.6
Filename, size File type Python version Upload date Hashes
Filename, size asynclog-0.1.6-py3-none-any.whl (6.0 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size asynclog-0.1.6.tar.gz (5.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page