123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- """
- Logging utility. Adapted from
- https://github.com/skypilot-org/skypilot/blob/master/sky/sky_logging.py
- """
- import logging
- import sys
- _FORMAT = "%(levelname)s %(asctime)s %(filename)s:%(lineno)d] %(message)s"
- _DATE_FORMAT = "%m-%d %H:%M:%S"
- class NewLineFormatter(logging.Formatter):
- """Adds logging prefix to newlines to align multi-line messages."""
- def __init__(self, fmt, datefmt=None):
- logging.Formatter.__init__(self, fmt, datefmt)
- def format(self, record):
- msg = logging.Formatter.format(self, record)
- if record.message != "":
- parts = msg.split(record.message)
- msg = msg.replace("\n", "\r\n" + parts[0])
- return msg
- _root_logger = logging.getLogger("aphrodite")
- _default_handler = None
- def _setup_logger():
- _root_logger.setLevel(logging.DEBUG)
- global _default_handler
- if _default_handler is None:
- _default_handler = logging.StreamHandler(sys.stdout)
- _default_handler.flush = sys.stdout.flush # type: ignore
- _default_handler.setLevel(logging.INFO)
- _root_logger.addHandler(_default_handler)
- fmt = NewLineFormatter(_FORMAT, datefmt=_DATE_FORMAT)
- _default_handler.setFormatter(fmt)
- # Setting this will avoid the message
- # being propagated to the parent logger.
- _root_logger.propagate = False
- # The logger is initialized when the module is imported.
- # This is thread-safe as the module is only imported once,
- # guaranteed by the Python GIL.
- _setup_logger()
- def init_logger(name: str):
- logger = logging.getLogger(name)
- logger.setLevel(logging.DEBUG)
- logger.addHandler(_default_handler)
- logger.propagate = False
- return logger
|