1
0
Fork 0
mirror of https://github.com/immich-app/immich.git synced 2024-12-28 06:31:58 +00:00

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 logging
import os import os
import sys import sys
from pathlib import Path from pathlib import Path
from socket import socket from socket import socket
import starlette
from gunicorn.arbiter import Arbiter from gunicorn.arbiter import Arbiter
from pydantic import BaseSettings from pydantic import BaseSettings
from rich.console import Console from rich.console import Console
@ -74,10 +74,28 @@ log_settings = LogSettings()
class CustomRichHandler(RichHandler): class CustomRichHandler(RichHandler):
def __init__(self) -> None: def __init__(self) -> None:
console = Console(color_system="standard", no_color=log_settings.no_color) 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)) log.setLevel(LOG_LEVELS.get(log_settings.log_level.lower(), logging.INFO))

View file

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