fix(ml): error logging (#6646)

* fix ml error logging

* exclude certain libraries from traceback
This commit is contained in:
Mert 2024-01-25 19:26:27 -05:00 committed by GitHub
parent b306cf564e
commit ca28e1e7a8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 26 additions and 9 deletions

View File

@ -1,10 +1,10 @@
import concurrent.futures
import logging
import os
import sys
from pathlib import Path
from socket import socket
import starlette
from gunicorn.arbiter import Arbiter
from pydantic import BaseSettings
from rich.console import Console
@ -74,10 +74,28 @@ log_settings = LogSettings()
class CustomRichHandler(RichHandler):
def __init__(self) -> None:
console = Console(color_system="standard", no_color=log_settings.no_color)
super().__init__(show_path=False, omit_repeated_times=False, console=console, tracebacks_suppress=[starlette])
self.excluded = ["uvicorn", "starlette", "fastapi"]
super().__init__(
show_path=False,
omit_repeated_times=False,
console=console,
rich_tracebacks=True,
tracebacks_suppress=[*self.excluded, concurrent.futures],
)
# hack to exclude certain modules from rich tracebacks
def emit(self, record: logging.LogRecord) -> None:
if record.exc_info is not None:
tb = record.exc_info[2]
while tb is not None:
if any(excluded in tb.tb_frame.f_code.co_filename for excluded in self.excluded):
tb.tb_frame.f_locals["_rich_traceback_omit"] = True
tb = tb.tb_next
return super().emit(record)
log = logging.getLogger("gunicorn.access")
log = logging.getLogger("ml.log")
log.setLevel(LOG_LEVELS.get(log_settings.log_level.lower(), logging.INFO))

View File

@ -1,16 +1,15 @@
{
"version": 1,
"disable_existing_loggers": true,
"formatters": { "rich": { "show_path": false, "omit_repeated_times": false } },
"disable_existing_loggers": false,
"handlers": {
"console": {
"class": "app.config.CustomRichHandler",
"formatter": "rich"
"class": "app.config.CustomRichHandler"
}
},
"loggers": {
"gunicorn.access": { "propagate": true },
"gunicorn.error": { "propagate": true }
"gunicorn.error": {
"handlers": ["console"]
}
},
"root": { "handlers": ["console"] }
}