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 <dni.khr@gmail.com>
This commit is contained in:
parent
348033da1b
commit
6a3a72b944
2 changed files with 33 additions and 9 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
HOST=127.0.0.1
|
HOST=127.0.0.1
|
||||||
PORT=5000
|
PORT=5000
|
||||||
|
|
||||||
DEBUG=true
|
DEBUG=false
|
||||||
|
|
||||||
LNBITS_ALLOWED_USERS=""
|
LNBITS_ALLOWED_USERS=""
|
||||||
LNBITS_ADMIN_USERS=""
|
LNBITS_ADMIN_USERS=""
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
import importlib
|
import importlib
|
||||||
|
import logging
|
||||||
import sys
|
import sys
|
||||||
import traceback
|
import traceback
|
||||||
import warnings
|
import warnings
|
||||||
|
|
||||||
from loguru import logger
|
|
||||||
|
|
||||||
from http import HTTPStatus
|
from http import HTTPStatus
|
||||||
|
|
||||||
from fastapi import FastAPI, Request
|
from fastapi import FastAPI, Request
|
||||||
|
|
@ -14,6 +12,7 @@ from fastapi.middleware.cors import CORSMiddleware
|
||||||
from fastapi.middleware.gzip import GZipMiddleware
|
from fastapi.middleware.gzip import GZipMiddleware
|
||||||
from fastapi.responses import JSONResponse
|
from fastapi.responses import JSONResponse
|
||||||
from fastapi.staticfiles import StaticFiles
|
from fastapi.staticfiles import StaticFiles
|
||||||
|
from loguru import logger
|
||||||
|
|
||||||
import lnbits.settings
|
import lnbits.settings
|
||||||
from lnbits.core.tasks import register_task_listeners
|
from lnbits.core.tasks import register_task_listeners
|
||||||
|
|
@ -199,8 +198,33 @@ def register_exception_handlers(app: FastAPI):
|
||||||
def configure_logger() -> None:
|
def configure_logger() -> None:
|
||||||
logger.remove()
|
logger.remove()
|
||||||
log_level: str = "DEBUG" if lnbits.settings.DEBUG else "INFO"
|
log_level: str = "DEBUG" if lnbits.settings.DEBUG else "INFO"
|
||||||
if lnbits.settings.DEBUG:
|
formatter = Formatter()
|
||||||
fmt: str = "<green>{time:YYYY-MM-DD HH:mm:ss.SS}</green> | <level>{level: <6}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> | <level>{message}</level>"
|
logger.add(sys.stderr, level=log_level, format=formatter.format)
|
||||||
else:
|
|
||||||
fmt: str = "<green>{time:YYYY-MM-DD HH:mm:ss.SS}</green> | <level>{level}</level> | <level>{message}</level>"
|
logging.getLogger("uvicorn").handlers = [InterceptHandler()]
|
||||||
logger.add(sys.stderr, level=log_level, format=fmt)
|
logging.getLogger("uvicorn.access").handlers = [InterceptHandler()]
|
||||||
|
|
||||||
|
|
||||||
|
class Formatter:
|
||||||
|
def __init__(self):
|
||||||
|
self.padding = 0
|
||||||
|
self.minimal_fmt: str = "<green>{time:YYYY-MM-DD HH:mm:ss.SS}</green> | <level>{level}</level> | <level>{message}</level>\n"
|
||||||
|
if lnbits.settings.DEBUG:
|
||||||
|
self.fmt: str = "<green>{time:YYYY-MM-DD HH:mm:ss.SS}</green> | <level>{level: <4}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> | <level>{message}</level>\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())
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue