|
- # Copyright (c) Alibaba, Inc. and its affiliates.
-
- import logging
- from typing import Optional
-
- init_loggers = {}
-
-
- def get_logger(log_file: Optional[str] = None,
- log_level: int = logging.INFO,
- file_mode: str = 'w'):
- """ Get logging logger
-
- Args:
- log_file: Log filename, if specified, file handler will be added to
- logger
- log_level: Logging level.
- file_mode: Specifies the mode to open the file, if filename is
- specified (if filemode is unspecified, it defaults to 'w').
- """
- logger_name = __name__.split('.')[0]
- logger = logging.getLogger(logger_name)
-
- if logger_name in init_loggers:
- return logger
-
- stream_handler = logging.StreamHandler()
- handlers = [stream_handler]
-
- # TODO @wenmeng.zwm add logger setting for distributed environment
- if log_file is not None:
- file_handler = logging.FileHandler(log_file, file_mode)
- handlers.append(file_handler)
-
- formatter = logging.Formatter(
- '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
- for handler in handlers:
- handler.setFormatter(formatter)
- handler.setLevel(log_level)
- logger.addHandler(handler)
-
- logger.setLevel(log_level)
- init_loggers[logger_name] = True
-
- return logger
|