mirror of https://github.com/alibaba/EasyCV.git
57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
# Copyright (c) Alibaba, Inc. and its affiliates.
|
|
import logging
|
|
|
|
from mmcv.utils import get_logger
|
|
|
|
from easycv.framework.errors import TypeError
|
|
|
|
|
|
def get_root_logger(log_file=None, log_level=logging.INFO):
|
|
"""Get the root logger.
|
|
|
|
The logger will be initialized if it has not been initialized. By default a
|
|
StreamHandler will be added. If `log_file` is specified, a FileHandler will
|
|
also be added. The name of the root logger is the top-level package name,
|
|
e.g., "easycv".
|
|
|
|
Args:
|
|
log_file (str | None): The log filename. If specified, a FileHandler
|
|
will be added to the root logger.
|
|
log_level (int): The root logger level. Note that only the process of
|
|
rank 0 is affected, while other processes will set the level to
|
|
"Error" and be silent most of the time.
|
|
|
|
Returns:
|
|
logging.Logger: The root logger.
|
|
"""
|
|
return get_logger(
|
|
__name__.split('.')[0], log_file=log_file, log_level=log_level)
|
|
|
|
|
|
def print_log(msg, logger=None, level=logging.INFO):
|
|
"""Print a log message.
|
|
|
|
Args:
|
|
msg (str): The message to be logged.
|
|
logger (logging.Logger | str | None): The logger to be used. Some
|
|
special loggers are:
|
|
- "root": the root logger obtained with `get_root_logger()`.
|
|
- "silent": no message will be printed.
|
|
- None: The `print()` method will be used to print log messages.
|
|
level (int): Logging level. Only available when `logger` is a Logger
|
|
object or "root".
|
|
"""
|
|
if logger is None:
|
|
print(msg)
|
|
elif isinstance(logger, logging.Logger):
|
|
logger.log(level, msg)
|
|
elif logger == 'silent':
|
|
pass
|
|
elif isinstance(logger, str):
|
|
_logger = get_logger(logger)
|
|
_logger.log(level, msg)
|
|
else:
|
|
raise TypeError(
|
|
'logger should be either a logging.Logger object, str, '
|
|
f'"silent" or None, but got {type(logger)}')
|