| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- from datetime import datetime, timezone
- import logging
- import os
- import sys
- # Suppress warnings from transformers
- # https://github.com/huggingface/transformers/issues/27214
- # Note: This should be set before importing transformers
- if "TRANSFORMERS_NO_ADVISORY_WARNINGS" not in os.environ:
- os.environ["TRANSFORMERS_NO_ADVISORY_WARNINGS"] = "1"
- TRACE_LEVEL = 5
- def setup_logging(debug: bool = False):
- level = logging.DEBUG if debug else logging.INFO
- logging.basicConfig(
- level=level,
- format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
- handlers=[logging.StreamHandler()],
- )
- logging.addLevelName(TRACE_LEVEL, "TRACE")
- logging.Logger.trace = trace
- logging.Formatter.formatTime = (
- lambda self, record, datefmt=None: datetime.fromtimestamp(
- record.created, timezone.utc
- ).astimezone()
- )
- # Third-party loggers to disable
- disable_logger_names = [
- "httpcore.connection",
- "httpcore.http11",
- "httpcore.proxy",
- "httpx",
- "asyncio",
- "aiocache.base",
- "urllib3.connectionpool",
- "multipart.multipart",
- "apscheduler.scheduler",
- "apscheduler.executors.default",
- "tzlocal",
- "alembic.runtime.migration",
- "python_multipart.multipart",
- "filelock",
- "fastapi-cdn-host",
- "huggingface_hub.file_download",
- "docker.auth",
- "kubernetes_asyncio.client.rest",
- "azure.core.pipeline.policies.http_logging_policy",
- "websockets.client",
- ]
- for logger_name in disable_logger_names:
- logger = logging.getLogger(logger_name)
- logger.disabled = True
- # Third-party loggers to print on debug
- debug_logger_names = [
- "alembic.runtime.migration",
- ]
- for logger_name in debug_logger_names:
- logger = logging.getLogger(logger_name)
- if debug:
- logger.setLevel(logging.DEBUG)
- else:
- logger.disabled = True
- def trace(self, message, *args, **kwargs):
- if self.isEnabledFor(TRACE_LEVEL):
- self._log(TRACE_LEVEL, message, args, **kwargs)
- class RedirectStdoutStderr:
- def __init__(self, target):
- self.target = target
- def __enter__(self):
- self.original_stdout = sys.stdout
- self.original_stderr = sys.stderr
- sys.stdout = self.target
- sys.stderr = self.target
- def __exit__(self, exc_type, exc_value, traceback):
- sys.stdout = self.original_stdout
- sys.stderr = self.original_stderr
|