def test_configure_logging_yaml(): logging_config = tempfile.NamedTemporaryFile(delete=False) logging_config.write(b""" version: 1 disable_existing_loggers: False formatters: test_formatter: format: '[%(asctime)s] %(levelname)s - %(message)s' handlers: test_handler: level: WARN formatter: test_formatter class: logging.StreamHandler stream: ext://sys.stdout loggers: test_logger: handlers: [test_handler] level: WARN propagate: False""") logging_config.close() os.environ["BENTOML__LOGGING__LOGGING_CONFIG"] = logging_config.name configure_logging() bentoml_logger = logging.getLogger("test_logger") assert bentoml_logger.level == logging.WARN assert bentoml_logger.propagate is False assert len(bentoml_logger.handlers) == 1 assert bentoml_logger.handlers[0].name == "test_handler" os.remove(logging_config.name) del os.environ["BENTOML__LOGGING__LOGGING_CONFIG"]
def test_configure_logging_advanced(): advanced_config = { "version": 1, "disable_existing_loggers": False, "formatters": { "test_formatter": {"format": "[%(asctime)s] %(levelname)s - %(message)s"} }, "handlers": { "test_handler": { "level": "WARN", "formatter": "test_formatter", "class": "logging.StreamHandler", "stream": "ext://sys.stdout", } }, "loggers": { "test_logger": { "handlers": ["test_handler"], "level": "WARN", "propagate": False, } }, } configure_logging(advanced_enabled=True, advanced_config=advanced_config) bentoml_logger = logging.getLogger("test_logger") assert bentoml_logger.level == logging.WARN assert bentoml_logger.propagate is False assert len(bentoml_logger.handlers) == 1 assert bentoml_logger.handlers[0].name == "test_handler"
def set_debug_mode(enabled: bool): os.environ[DEBUG_ENV_VAR] = str(enabled) # reconfigure logging from bentoml.utils.log import configure_logging configure_logging() logger.debug( f"Setting debug mode: {'ON' if enabled else 'OFF'} for current session" )
def _reset_bentoml_home(new_bentoml_home_directory): global _config # pylint: disable=global-statement global DEFAULT_BENTOML_HOME, BENTOML_HOME # pylint: disable=global-statement DEFAULT_BENTOML_HOME = new_bentoml_home_directory BENTOML_HOME = new_bentoml_home_directory # reload config _config = load_config() # re-config logging from bentoml.utils.log import configure_logging root = logging.getLogger() map(root.removeHandler, root.handlers[:]) map(root.removeFilter, root.filters[:]) configure_logging()
def test_configure_logging_file_disabled(): configure_logging(file_logging_enabled=False) bentoml_logger = logging.getLogger("bentoml") assert bentoml_logger.level == logging.INFO assert bentoml_logger.propagate is False assert len(bentoml_logger.handlers) == 1 assert bentoml_logger.handlers[0].name == "console" prediction_logger = logging.getLogger("bentoml.prediction") assert prediction_logger.level == logging.INFO assert prediction_logger.propagate is False assert len(prediction_logger.handlers) == 1 assert prediction_logger.handlers[0].name == "console" feedback_logger = logging.getLogger("bentoml.feedback") assert feedback_logger.level == logging.INFO assert feedback_logger.propagate is False assert len(feedback_logger.handlers) == 1 assert feedback_logger.handlers[0].name == "console"
def test_configure_logging_default(): configure_logging() bentoml_logger = logging.getLogger("bentoml") assert bentoml_logger.level == logging.INFO assert bentoml_logger.propagate is False assert len(bentoml_logger.handlers) == 2 assert bentoml_logger.handlers[0].name == "console" assert bentoml_logger.handlers[1].name == "local" prediction_logger = logging.getLogger("bentoml.prediction") assert prediction_logger.level == logging.INFO assert prediction_logger.propagate is False assert len(prediction_logger.handlers) == 2 assert prediction_logger.handlers[0].name == "console" assert prediction_logger.handlers[1].name == "prediction" feedback_logger = logging.getLogger("bentoml.feedback") assert feedback_logger.level == logging.INFO assert feedback_logger.propagate is False assert len(feedback_logger.handlers) == 2 assert feedback_logger.handlers[0].name == "console" assert feedback_logger.handlers[1].name == "feedback"
def test_configure_logging_console_disabled(): os.environ["BENTOML__LOGGING__FILE_LOGGING_ENABLED"] = "false" configure_logging() bentoml_logger = logging.getLogger("bentoml") assert bentoml_logger.level == logging.INFO assert bentoml_logger.propagate is False assert len(bentoml_logger.handlers) == 1 assert bentoml_logger.handlers[0].name == "console" prediction_logger = logging.getLogger("bentoml.prediction") assert prediction_logger.level == logging.INFO assert prediction_logger.propagate is False assert len(prediction_logger.handlers) == 1 assert prediction_logger.handlers[0].name == "console" feedback_logger = logging.getLogger("bentoml.feedback") assert feedback_logger.level == logging.INFO assert feedback_logger.propagate is False assert len(feedback_logger.handlers) == 1 assert feedback_logger.handlers[0].name == "console" del os.environ["BENTOML__LOGGING__FILE_LOGGING_ENABLED"]
def wrapper(quiet, verbose, *args, **kwargs): if verbose: from bentoml import config config().set('core', 'debug', 'true') configure_logging(logging.DEBUG) elif quiet: configure_logging(logging.ERROR) else: configure_logging() # use default setting in local bentoml.cfg return func(*args, **kwargs)
def bentoml_cli(ctx, verbose, quiet): """ BentoML CLI tool """ ctx.verbose = verbose ctx.quiet = quiet if verbose: configure_logging(logging.DEBUG) elif quiet: configure_logging(logging.ERROR) else: configure_logging() # use default setting in local bentoml.cfg
def bentoml_cli(ctx, debug, quiet): """ BentoML CLI tool """ ctx.debug = debug ctx.quiet = quiet if debug: configure_logging(logging.DEBUG) elif quiet: configure_logging(logging.WARNING) else: configure_logging() # use default setting in local bentoml.cfg
def bentoml_cli(ctx, verbose, quiet): """ BentoML CLI tool """ ctx.verbose = verbose ctx.quiet = quiet if verbose: from bentoml import config config().set('core', 'debug', 'true') configure_logging(logging.DEBUG) elif quiet: configure_logging(logging.ERROR) else: configure_logging() # use default setting in local bentoml.cfg
# limitations under the License. from ._version import get_versions __version__ = get_versions()['version'] del get_versions from bentoml.configuration import inject_dependencies from bentoml.utils.log import configure_logging # Inject dependencies and configurations inject_dependencies() # Configuring logging properly before loading other modules configure_logging() from bentoml.saved_bundle import load_from_dir, save_to_dir # noqa: E402 from bentoml.service import ( # noqa: E402 BentoService, api_decorator as api, env_decorator as env, web_static_content_decorator as web_static_content, artifacts_decorator as artifacts, ver_decorator as ver, save, ) from bentoml.cli import create_bentoml_cli commandline_interface = create_bentoml_cli()
import os import sys import logging from bentoml import bundler from bentoml.cli import create_bento_service_cli from bentoml.utils.log import configure_logging # By default, ignore warnings when loading BentoService installed as PyPI distribution # CLI will change back to default log level in config(info), and by adding --quiet or # --verbose CLI option, user can change the CLI output behavior configure_logging(logging.ERROR) __VERSION__ = "20200206150926_DCA9FA" __module_path = os.path.abspath(os.path.dirname(__file__)) WordEmbeddingModel = bundler.load_bento_service_class(__module_path) cli=create_bento_service_cli(__module_path) def load(): return bundler.load(__module_path) __all__ = ['__version__', 'WordEmbeddingModel', 'load']