diff options
author | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
---|---|---|
committer | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
commit | 4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch) | |
tree | ee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/litellm/_logging.py | |
parent | cc961e04ba734dd72309fb548a2f97d67d578813 (diff) | |
download | gn-ai-4a52a71956a8d46fcb7294ac71734504bb09bcc2.tar.gz |
Diffstat (limited to '.venv/lib/python3.12/site-packages/litellm/_logging.py')
-rw-r--r-- | .venv/lib/python3.12/site-packages/litellm/_logging.py | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/litellm/_logging.py b/.venv/lib/python3.12/site-packages/litellm/_logging.py new file mode 100644 index 00000000..151ae600 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/litellm/_logging.py @@ -0,0 +1,113 @@ +import json +import logging +import os +from datetime import datetime +from logging import Formatter + +set_verbose = False + +if set_verbose is True: + logging.warning( + "`litellm.set_verbose` is deprecated. Please set `os.environ['LITELLM_LOG'] = 'DEBUG'` for debug logs." + ) +json_logs = bool(os.getenv("JSON_LOGS", False)) +# Create a handler for the logger (you may need to adapt this based on your needs) +log_level = os.getenv("LITELLM_LOG", "DEBUG") +numeric_level: str = getattr(logging, log_level.upper()) +handler = logging.StreamHandler() +handler.setLevel(numeric_level) + + +class JsonFormatter(Formatter): + def __init__(self): + super(JsonFormatter, self).__init__() + + def formatTime(self, record, datefmt=None): + # Use datetime to format the timestamp in ISO 8601 format + dt = datetime.fromtimestamp(record.created) + return dt.isoformat() + + def format(self, record): + json_record = { + "message": record.getMessage(), + "level": record.levelname, + "timestamp": self.formatTime(record), + } + + if record.exc_info: + json_record["stacktrace"] = self.formatException(record.exc_info) + + return json.dumps(json_record) + + +# Create a formatter and set it for the handler +if json_logs: + handler.setFormatter(JsonFormatter()) +else: + formatter = logging.Formatter( + "\033[92m%(asctime)s - %(name)s:%(levelname)s\033[0m: %(filename)s:%(lineno)s - %(message)s", + datefmt="%H:%M:%S", + ) + + handler.setFormatter(formatter) + +verbose_proxy_logger = logging.getLogger("LiteLLM Proxy") +verbose_router_logger = logging.getLogger("LiteLLM Router") +verbose_logger = logging.getLogger("LiteLLM") + +# Add the handler to the logger +verbose_router_logger.addHandler(handler) +verbose_proxy_logger.addHandler(handler) +verbose_logger.addHandler(handler) + + +def _turn_on_json(): + handler = logging.StreamHandler() + handler.setFormatter(JsonFormatter()) + + # Define a list of the loggers to update + loggers = [verbose_router_logger, verbose_proxy_logger, verbose_logger] + + # Iterate through each logger and update its handlers + for logger in loggers: + # Remove all existing handlers + for h in logger.handlers[:]: + logger.removeHandler(h) + + # Add the new handler + logger.addHandler(handler) + + +def _turn_on_debug(): + verbose_logger.setLevel(level=logging.DEBUG) # set package log to debug + verbose_router_logger.setLevel(level=logging.DEBUG) # set router logs to debug + verbose_proxy_logger.setLevel(level=logging.DEBUG) # set proxy logs to debug + + +def _disable_debugging(): + verbose_logger.disabled = True + verbose_router_logger.disabled = True + verbose_proxy_logger.disabled = True + + +def _enable_debugging(): + verbose_logger.disabled = False + verbose_router_logger.disabled = False + verbose_proxy_logger.disabled = False + + +def print_verbose(print_statement): + try: + if set_verbose: + print(print_statement) # noqa + except Exception: + pass + + +def _is_debugging_on() -> bool: + """ + Returns True if debugging is on + """ + if verbose_logger.isEnabledFor(logging.DEBUG) or set_verbose is True: + return True + return False |