mirror of
https://github.com/tiqi-group/pydase.git
synced 2025-04-21 00:40:01 +02:00
updates logging to remove uvicorn dependency
This commit is contained in:
parent
369d0b1126
commit
9de4071120
@ -2,11 +2,12 @@ import asyncio
|
||||
import logging
|
||||
import logging.config
|
||||
import sys
|
||||
from collections.abc import Callable
|
||||
from copy import copy
|
||||
from typing import ClassVar, Literal
|
||||
|
||||
import click
|
||||
import socketio # type: ignore[import-untyped]
|
||||
import uvicorn.config
|
||||
import uvicorn.logging
|
||||
|
||||
import pydase.config
|
||||
|
||||
@ -41,7 +42,7 @@ LOGGING_CONFIG = {
|
||||
}
|
||||
|
||||
|
||||
class DefaultFormatter(uvicorn.logging.ColourizedFormatter):
|
||||
class DefaultFormatter(logging.Formatter):
|
||||
"""
|
||||
A custom log formatter class that:
|
||||
|
||||
@ -50,6 +51,36 @@ class DefaultFormatter(uvicorn.logging.ColourizedFormatter):
|
||||
for formatting the output, instead of the plain text message.
|
||||
"""
|
||||
|
||||
level_name_colors: ClassVar[dict[int, Callable[..., str]]] = {
|
||||
logging.DEBUG: lambda level_name: click.style(str(level_name), fg="cyan"),
|
||||
logging.INFO: lambda level_name: click.style(str(level_name), fg="green"),
|
||||
logging.WARNING: lambda level_name: click.style(str(level_name), fg="yellow"),
|
||||
logging.ERROR: lambda level_name: click.style(str(level_name), fg="red"),
|
||||
logging.CRITICAL: lambda level_name: click.style(
|
||||
str(level_name), fg="bright_red"
|
||||
),
|
||||
}
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
fmt: str | None = None,
|
||||
datefmt: str | None = None,
|
||||
style: Literal["%", "{", "$"] = "%",
|
||||
use_colors: bool | None = None,
|
||||
):
|
||||
if use_colors in (True, False):
|
||||
self.use_colors = use_colors
|
||||
else:
|
||||
self.use_colors = sys.stdout.isatty()
|
||||
super().__init__(fmt=fmt, datefmt=datefmt, style=style)
|
||||
|
||||
def color_level_name(self, level_name: str, level_no: int) -> str:
|
||||
def default(level_name: str) -> str:
|
||||
return str(level_name)
|
||||
|
||||
func = self.level_name_colors.get(level_no, default)
|
||||
return func(level_name)
|
||||
|
||||
def formatMessage(self, record: logging.LogRecord) -> str: # noqa: N802
|
||||
recordcopy = copy(record)
|
||||
levelname = recordcopy.levelname
|
||||
@ -78,7 +109,8 @@ class SocketIOHandler(logging.Handler):
|
||||
self._sio = sio
|
||||
|
||||
def format(self, record: logging.LogRecord) -> str:
|
||||
return f"{record.name}:{record.funcName}:{record.lineno} - {record.message}"
|
||||
msg = record.getMessage()
|
||||
return f"{record.name}:{record.funcName}:{record.lineno} - {msg}"
|
||||
|
||||
def emit(self, record: logging.LogRecord) -> None:
|
||||
log_entry = self.format(record)
|
||||
@ -108,18 +140,3 @@ def setup_logging() -> None:
|
||||
logger.debug("Configuring pydase logging.")
|
||||
|
||||
logging.config.dictConfig(LOGGING_CONFIG)
|
||||
|
||||
# configuring uvicorn logger
|
||||
uvicorn.config.LOGGING_CONFIG["formatters"]["default"]["fmt"] = (
|
||||
"%(asctime)s.%(msecs)03d | %(levelprefix)s %(message)s"
|
||||
)
|
||||
uvicorn.config.LOGGING_CONFIG["formatters"]["default"]["datefmt"] = (
|
||||
"%Y-%m-%d %H:%M:%S"
|
||||
)
|
||||
uvicorn.config.LOGGING_CONFIG["formatters"]["access"]["fmt"] = (
|
||||
"%(asctime)s.%(msecs)03d | %(levelprefix)s %(client_addr)s "
|
||||
'- "%(request_line)s" %(status_code)s'
|
||||
)
|
||||
uvicorn.config.LOGGING_CONFIG["formatters"]["access"]["datefmt"] = (
|
||||
"%Y-%m-%d %H:%M:%S"
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user