From 6a3a72b9445d0d92ebee89cec80cef67481bbebc Mon Sep 17 00:00:00 2001 From: calle <93376500+callebtc@users.noreply.github.com> Date: Fri, 15 Jul 2022 19:54:12 +0200 Subject: [PATCH] Uvicorn loguru format (#741) * use loguru formatting for uvicorn logs * remove depth from logging interceptor * format for uvicorn * black * isort * black again * python3-dev * python3-dev * leaner pipeline Co-authored-by: dni --- .env.example | 2 +- lnbits/app.py | 40 ++++++++++++++++++++++++++++++++-------- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/.env.example b/.env.example index 4d2241e3..6ef60bc1 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,7 @@ HOST=127.0.0.1 PORT=5000 -DEBUG=true +DEBUG=false LNBITS_ALLOWED_USERS="" LNBITS_ADMIN_USERS="" diff --git a/lnbits/app.py b/lnbits/app.py index 9ab7c75d..a7c8fdaf 100644 --- a/lnbits/app.py +++ b/lnbits/app.py @@ -1,11 +1,9 @@ import asyncio import importlib +import logging import sys import traceback import warnings - -from loguru import logger - from http import HTTPStatus from fastapi import FastAPI, Request @@ -14,6 +12,7 @@ from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.gzip import GZipMiddleware from fastapi.responses import JSONResponse from fastapi.staticfiles import StaticFiles +from loguru import logger import lnbits.settings from lnbits.core.tasks import register_task_listeners @@ -199,8 +198,33 @@ def register_exception_handlers(app: FastAPI): def configure_logger() -> None: logger.remove() log_level: str = "DEBUG" if lnbits.settings.DEBUG else "INFO" - if lnbits.settings.DEBUG: - fmt: str = "{time:YYYY-MM-DD HH:mm:ss.SS} | {level: <6} | {name}:{function}:{line} | {message}" - else: - fmt: str = "{time:YYYY-MM-DD HH:mm:ss.SS} | {level} | {message}" - logger.add(sys.stderr, level=log_level, format=fmt) + formatter = Formatter() + logger.add(sys.stderr, level=log_level, format=formatter.format) + + logging.getLogger("uvicorn").handlers = [InterceptHandler()] + logging.getLogger("uvicorn.access").handlers = [InterceptHandler()] + + +class Formatter: + def __init__(self): + self.padding = 0 + self.minimal_fmt: str = "{time:YYYY-MM-DD HH:mm:ss.SS} | {level} | {message}\n" + if lnbits.settings.DEBUG: + self.fmt: str = "{time:YYYY-MM-DD HH:mm:ss.SS} | {level: <4} | {name}:{function}:{line} | {message}\n" + else: + self.fmt: str = self.minimal_fmt + + def format(self, record): + function = "{function}".format(**record) + if function == "emit": # uvicorn logs + return self.minimal_fmt + return self.fmt + + +class InterceptHandler(logging.Handler): + def emit(self, record): + try: + level = logger.level(record.levelname).name + except ValueError: + level = record.levelno + logger.log(level, record.getMessage())