aiolog

Asynchronous handlers for standard python logging library


Keywords
logging, asyncio
License
ISC
Install
pip install aiolog==0.1.1

Documentation

aiolog

Asynchronous handlers for standard python logging library. Currently telegram (requires aiohttp) and smtp (via aiosmtplib) handlers are available.

Installation

pip install aiolog

Repository: https://github.com/imbolc/aiolog

Configuration

Just use any way you prefer to configure built-in logging library, e.g.:

logging.config.dictConfig({
    'version': 1,
    'handlers': {
        'telegram': {
            # any built-in `logging.Handler` params
            'level': 'DEBUG',
            'class': 'aiolog.telegram.Handler',

            # common `aiolog` params
            'timeout': 10,  # 60 by default
            'queue_size': 100,  # 1000 by default

            # handler specific params
            'token': 'your telegram bot token',
            'chat_id': 'telegram chat id',
        },
        'smtp': {
            'level': 'WARNING',
            'class': 'aiolog.smtp.Handler',
            'hostname': 'smtp.yandex.com',
            'port': 465,
            'sender': 'bot@email',
            'recipient': 'your@email',
            'use_tls': True,
            'username': 'smtp username',
            'password': 'smtp password',
        },
    },
    'loggers': {
        '': {
            'handlers': [
                'telegram',
                'smtp',
            ],
            'level': 'DEBUG',
        },
    }
})

Usage

You can use built-in logging library as usual, just add starting and stopping of aiolog.

log = logging.getLogger(__name__)

async def hello():
    log.debug('Hey')

aiolog.start()
loop = asyncio.get_event_loop()
loop.run_until_complete(hello())
loop.run_until_complete(aiolog.stop())

Look at the example folder for more examples.

aiohttp

With aiohttp, you can use a little more sugar. Instead of starting and stopping aiolog directly, you can use:

aiolog.setup_aiohttp(app)