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:
parent
b306cf564e
commit
ca28e1e7a8
2 changed files with 26 additions and 9 deletions
|
@ -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))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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"] }
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue