Files
mobile.de/mobilede_scraper/core/logs.py
T
2026-08-21 11:14:00 +03:00

39 lines
1.3 KiB
Python

import logging
import sys
def setup_logging(level: str = "INFO", log_file: str | None = None) -> None:
# Пишем в stderr для Docker и Celery.
handlers: list[logging.Handler] = [logging.StreamHandler(sys.stderr)]
if log_file:
handlers.append(logging.FileHandler(log_file, encoding="utf-8"))
for handler in handlers:
handler.setLevel(getattr(logging, level.upper(), logging.INFO))
root = logging.getLogger()
root.setLevel(getattr(logging, level.upper(), logging.INFO))
# Убираем старые хендлеры после fork.
for old_handler in list(root.handlers):
try:
old_handler.close()
except Exception:
pass
root.handlers.clear()
for handler in handlers:
root.addHandler(handler)
root.propagate = False
fmt = logging.Formatter(
"%(asctime)s | %(levelname)s | %(name)s | %(message)s"
)
for handler in root.handlers:
handler.setFormatter(fmt)
for logger_name in (
"celery.app.trace",
"celery.worker.request",
"celery.worker.strategy",
):
noisy_logger = logging.getLogger(logger_name)
noisy_logger.handlers.clear()
noisy_logger.propagate = False
noisy_logger.disabled = True