From 01319e1a630608bfa63c7bb8afb9e440e42d76a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20Voituret?= Date: Wed, 6 Nov 2019 20:30:47 +0100 Subject: [PATCH] refactor: logging --- spleeter/__main__.py | 7 +++-- spleeter/model/provider/github.py | 4 +-- spleeter/utils/logging.py | 44 +++++++++++++++++++++---------- 3 files changed, 35 insertions(+), 20 deletions(-) diff --git a/spleeter/__main__.py b/spleeter/__main__.py index fde5292..5f72040 100644 --- a/spleeter/__main__.py +++ b/spleeter/__main__.py @@ -12,7 +12,7 @@ import warnings from .commands import create_argument_parser from .utils.configuration import load_configuration -from .utils.logging import enable_logging, enable_verbose_logging +from .utils.logging import enable_logging, enable_tensorflow_logging __email__ = 'research@deezer.com' __author__ = 'Deezer Research' @@ -28,10 +28,9 @@ def main(argv): """ parser = create_argument_parser() arguments = parser.parse_args(argv[1:]) + enable_logging() if arguments.verbose: - enable_verbose_logging() - else: - enable_logging() + enable_tensorflow_logging() if arguments.command == 'separate': from .commands.separate import entrypoint elif arguments.command == 'train': diff --git a/spleeter/model/provider/github.py b/spleeter/model/provider/github.py index cc7028c..aad0c44 100644 --- a/spleeter/model/provider/github.py +++ b/spleeter/model/provider/github.py @@ -65,9 +65,9 @@ class GithubModelProvider(ModelProvider): raise IOError(f'Resource {url} not found') with TemporaryFile() as stream: copyfileobj(response.raw, stream) - get_logger().debug('Extracting downloaded archive') + get_logger().info('Extracting downloaded %s archive', name) stream.seek(0) tar = tarfile.open(fileobj=stream) tar.extractall(path=path) tar.close() - get_logger().debug('Model file extracted') + get_logger().info('%s model file(s) extracted', name) diff --git a/spleeter/utils/logging.py b/spleeter/utils/logging.py index 031e0c3..15431d0 100644 --- a/spleeter/utils/logging.py +++ b/spleeter/utils/logging.py @@ -3,12 +3,16 @@ """ Centralized logging facilities for Spleeter. """ +import logging + from os import environ __email__ = 'research@deezer.com' __author__ = 'Deezer Research' __license__ = 'MIT License' +_FORMAT = '%(levelname)s:%(name)s:%(message)s' + class _LoggerHolder(object): """ Logger singleton instance holder. """ @@ -16,30 +20,42 @@ class _LoggerHolder(object): INSTANCE = None +def get_tensorflow_logger(): + """ + """ + # pylint: disable=import-error + from tensorflow.compat.v1 import logging + # pylint: enable=import-error + return logging + + def get_logger(): """ Returns library scoped logger. :returns: Library logger. """ if _LoggerHolder.INSTANCE is None: - # pylint: disable=import-error - from tensorflow.compat.v1 import logging - # pylint: enable=import-error - _LoggerHolder.INSTANCE = logging - _LoggerHolder.INSTANCE.set_verbosity(_LoggerHolder.INSTANCE.ERROR) - environ['TF_CPP_MIN_LOG_LEVEL'] = '3' + formatter = logging.Formatter(_FORMAT) + handler = logging.StreamHandler() + handler.setFormatter(formatter) + logger = logging.getLogger('spleeter') + logger.addHandler(handler) + logger.setLevel(logging.INFO) + _LoggerHolder.INSTANCE = logger return _LoggerHolder.INSTANCE -def enable_logging(): - """ Enable INFO level logging. """ +def enable_tensorflow_logging(): + """ Enable tensorflow logging. """ environ['TF_CPP_MIN_LOG_LEVEL'] = '1' + tf_logger = get_tensorflow_logger() + tf_logger.set_verbosity(tf_logger.INFO) logger = get_logger() - logger.set_verbosity(logger.INFO) + logger.setLevel(logging.DEBUG) -def enable_verbose_logging(): - """ Enable DEBUG level logging. """ - environ['TF_CPP_MIN_LOG_LEVEL'] = '0' - logger = get_logger() - logger.set_verbosity(logger.DEBUG) +def enable_logging(): + """ Configure default logging. """ + environ['TF_CPP_MIN_LOG_LEVEL'] = '3' + tf_logger = get_tensorflow_logger() + tf_logger.set_verbosity(tf_logger.ERROR)