fix worker recovery and docker logs

This commit is contained in:
qananasikq
2026-04-13 20:46:39 +03:00
parent eaafbd5816
commit c729f971e3
4 changed files with 86 additions and 10 deletions

View File

@@ -18,15 +18,22 @@ def set_trace_id(trace_id: str) -> None:
def setup_logging(level: str = "INFO", log_file: str | None = None) -> None:
handlers: list[logging.Handler] = [logging.StreamHandler(sys.stdout)]
# stderr — Docker и Celery prefork корректно его подхватывают.
handlers: list[logging.Handler] = [logging.StreamHandler(sys.stderr)]
if log_file:
handlers.append(logging.FileHandler(log_file, encoding="utf-8"))
trace_filter = TraceIdFilter()
for handler in handlers:
handler.addFilter(trace_filter)
logging.basicConfig(
level=getattr(logging, level.upper(), logging.INFO),
format="%(asctime)s | %(levelname)s | %(name)s | trace=%(trace_id)s | %(message)s",
handlers=handlers,
force=True,
handler.setLevel(getattr(logging, level.upper(), logging.INFO))
root = logging.getLogger()
root.setLevel(getattr(logging, level.upper(), logging.INFO))
# Убираем старые хендлеры, чтобы не дублировать после fork.
root.handlers.clear()
for handler in handlers:
root.addHandler(handler)
fmt = logging.Formatter(
"%(asctime)s | %(levelname)s | %(name)s | trace=%(trace_id)s | %(message)s"
)
for handler in root.handlers:
handler.setFormatter(fmt)