Dead Simple Logging
What python's logging
should've been
Installation
pip install dslog
Usage
- Any custom "handler" (aka function to actually print)
import rich
from dslog import Logger
logger = Logger.of(rich.print) \
.limit('WARNING') \
.format(lambda *objs, level: (f'[bold][{level}][/]', *objs))
logger('My message', ..., level='INFO')
logger('Oops!', { 'more': 'details' }, level='WARNING')
- Or some of the predefined ones, which come already formatted
Logger.rich()
Logger.file('log.txt')
- Or the best default logger
Logger.empty()
uvicorn
/fastapi
Logging
If you've used it before, you know it sucks. No more:
from fastapi import FastAPI
import uvicorn
from dslog import Logger
from dslog.uvicorn import setup_loggers_lifespan, DEFAULT_FORMATTER, ACCESS_FORMATTER
logger = Logger.click().prefix('[MY API]')
app = FastAPI(lifespan=setup_loggers_lifespan(
access=logger.prefix('[ACCESS]').format(ACCESS_FORMATTER).limit('WARNING'),
uvicorn=logger.format(DEFAULT_FORMATTER).limit('INFO'),
))
uvicorn.run(app)