コード例 #1
0
ファイル: extended_logger.py プロジェクト: kefir/snakee
 def __init__(
         self,
         name: OptName = arg.AUTO,
         level: Level = arg.AUTO,
         formatter: Union[Formatter, arg.Auto] = arg.AUTO,
         loggers: SubLoggers = arg.AUTO,
         context: Context = None,
         file: Optional[FileOrName] = None,
 ):
     name = arg.acquire(name, DEFAULT_LOGGER_NAME)
     level = arg.acquire(level, DEFAULT_LOGGING_LEVEL)
     formatter = arg.acquire(formatter, DEFAULT_FORMATTER)
     if not isinstance(level, LoggingLevel):
         level = LoggingLevel(level)
     if isinstance(loggers, list):
         loggers = {i: i.get_name() for i in loggers}
     elif not arg.is_defined(loggers):
         loggers = dict()
     if name not in loggers:
         level_value = arg.get_value(level)
         base_logger = self.build_base_logger(name, level_value, formatter)
         loggers[name] = base_logger
     self._level = level
     super().__init__(name=name, children=loggers, context=context)
     if file:
         self.set_file(file)
コード例 #2
0
ファイル: extended_logger.py プロジェクト: az365/snakee
 def log(
     self,
     msg: Union[str, list, tuple],
     level: Level = arg.AUTO,
     logger: Union[BaseLogger, arg.Auto] = arg.AUTO,
     end: Union[str, arg.Auto] = arg.AUTO,
     verbose: bool = True,
     truncate: bool = True,
     category: Optional[Type] = None,
     stacklevel: Optional[int] = None,
 ) -> None:
     level = arg.acquire(
         level, LoggingLevel.Info if verbose else LoggingLevel.Debug)
     logger = arg.delayed_acquire(logger, self.get_base_logger)
     if isinstance(msg, BaseException):
         msg = str(msg)
     if isinstance(msg, str):
         msg = [msg]
     elif isinstance(msg, Iterable):
         msg = list(msg)
     else:
         raise TypeError(
             'Expected msg as str or list[str], got {}'.format(msg))
     if category:
         category_name = arg.get_name(category)
         msg = [category_name] + msg
     if stacklevel:
         caller = getframeinfo(stack()[stacklevel + 1][0])
         file_name_without_path = caller.filename.split('\\')[-1].split(
             '/')[-1]
         msg = ['{}:{}:'.format(file_name_without_path, caller.lineno)
                ] + msg
     if isinstance(msg, (list, tuple)):
         msg = self.format_message(*msg)
     if not isinstance(level, LoggingLevel):
         level = LoggingLevel(level)
     if logger:
         if self.is_suitable_level(level):
             logging_method = getattr(logger, level.get_method_name())
             logging_method(msg)
     if verbose and not self.is_suitable_level(level):
         self.show(msg, end=end, truncate=truncate)
コード例 #3
0
ファイル: extended_logger.py プロジェクト: kefir/snakee
 def log(
         self,
         msg: Union[str, list, tuple],
         level: Level = arg.AUTO,
         logger: Union[BaseLogger, arg.Auto] = arg.AUTO,
         end: Union[str, arg.Auto] = arg.AUTO,
         verbose: bool = True, truncate: bool = True,
 ) -> NoReturn:
     level = arg.acquire(level, LoggingLevel.Info if verbose else LoggingLevel.Debug)
     logger = arg.delayed_acquire(logger, self.get_base_logger)
     if isinstance(msg, (list, tuple)):
         msg = self.format_message(*msg)
     if not isinstance(level, LoggingLevel):
         level = LoggingLevel(level)
     if logger:
         if self.is_suitable_level(level):
             logging_method = getattr(logger, level.get_method_name())
             logging_method(msg)
     if verbose and not self.is_suitable_level(level):
         self.show(msg, end=end, truncate=truncate)
コード例 #4
0
ファイル: logger_classes.py プロジェクト: kefir/snakee
def get_method_name(level: LoggingLevel = LoggingLevel.Info):
    if not isinstance(level, LoggingLevel):
        level = LoggingLevel(level)
    return level.get_method_name()
コード例 #5
0
ファイル: logger_classes.py プロジェクト: kefir/snakee
    from loggers.logging_context_stub import LoggingContextStub
    from loggers.fallback_logger import FallbackLogger
except ImportError:  # Apparently no higher-level package has been imported, fall back to a local import.
    from ..utils import arguments as arg
    from .logger_interface import LoggerInterface
    from .extended_logger_interface import ExtendedLoggerInterface, LoggingLevel
    from .selection_logger_interface import SelectionLoggerInterface
    from .extended_logger import ExtendedLogger, SingletonLogger, DEFAULT_LOGGER_NAME, DEFAULT_FORMATTER
    from .progress_interface import ProgressInterface, OperationStatus
    from .progress import Progress
    from .detailed_message import DetailedMessage, SelectionError
    from .message_collector import MessageCollector, SelectionMessageCollector, CommonMessageCollector
    from .logging_context_stub import LoggingContextStub
    from .fallback_logger import FallbackLogger

DEFAULT_LOGGING_LEVEL = LoggingLevel.get_default()


def get_method_name(level: LoggingLevel = LoggingLevel.Info):
    if not isinstance(level, LoggingLevel):
        level = LoggingLevel(level)
    return level.get_method_name()


def get_logger(name=DEFAULT_LOGGER_NAME,
               level=DEFAULT_LOGGING_LEVEL,
               context=None):
    if name == DEFAULT_LOGGER_NAME:
        return SingletonLogger(name=name, level=level, context=context)
    else:
        return ExtendedLogger(name=name, level=level, context=context)