V minulém článku jsem nadhodil možnost ukládání logů do DynamoDB, ale nedostal jsem se k přímé implementaci. Proto si ukážeme základní implementaci v Pythonu.

Python log handler

Implementace v Pythonu je hezky přímočará. Stačí vytvořit nový handler pro modul logging a je hotovo. Podobným způsobem si můžete jednoduše vytvořit handler, který vám pošle email/sms/hook při každém kritical logu.

Implementace

Samotný handler je dostupný na GitHubu. Stačí mu pouze předhodit inicializovanou tabulku a je to :)

Ukázka

Pro ukázku předpokládejme, že již umíme základy práce s AWS a umíme si vytvořit nového uživatele s potřebnými právy a příslušnou tabulku.

import logging
import logging.handlers
import dynamoHandler
import boto.dynamodb2
import boto.dynamodb2.table

# iniciace připojení (základní typ)
conn = boto.dynamodb2.connect_to_region(
    'eu-west-1',
    aws_access_key_id='ACCESS_KEY',
    aws_secret_access_key='SECRET'
)

dynamo_table = boto.dynamodb2.table.Table("dynamo-log", connection=conn)

logging.basicConfig(filename="app.log", level=logging.WARNING)
logger = logging.getLogger()

ch = dynamoHandler.DynamoHandler(dynamo_table)
ch.setLevel(logging.CRITICAL)

logger.addHandler(ch)

# otestování logu
logger.debug('Test 1')
logger.info('Test 2')
logger.warning('Test 3')
logger.error('Test 4')
logger.critical('Test 5')  # pouze kritical se uloží i do DynamoDB

Závěrem

Myslím, že je kód dostatečně vypovídající a není potřeba dalších zdlouhavých komentářů. Pokud by ale byly dotazy, napište je do diskuze.