コード例 #1
0
def test_init_logging(monkeypatch, is_verbose, log_level):
    """``_init_logging`` sets the logging module format and level."""
    basic_config_mock = mock.MagicMock()
    config = {"verbose": is_verbose}

    monkeypatch.setattr(logging, "basicConfig", basic_config_mock)
    client._init_logging(config)

    basic_config_mock.assert_called_once_with(
        format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
        level=log_level)
    assert logging.getLogger("taskcluster").level == logging.WARNING
コード例 #2
0
def update_logging_config(config, log_name="", file_name="worker.log"):
    """Update python logging settings from config.

    * Use formatting from config settings.
    * Log to screen if ``verbose``
    * Add a rotating logfile from config settings.

    Args:
        config (dict): the running config
        log_name (str, optional): the logger name to use. Primarily for testing.
            Defaults to ``""``
        file_name (str, optional): the log file path to use. Defaults to ``"worker.log"``

    """
    _init_logging(config)
    top_level_logger = logging.getLogger(log_name)

    datefmt = config["log_datefmt"]
    fmt = config["log_fmt"]
    formatter = logging.Formatter(fmt=fmt, datefmt=datefmt)

    if config.get("verbose"):
        top_level_logger.setLevel(logging.DEBUG)
    else:
        top_level_logger.setLevel(logging.INFO)

    if len(top_level_logger.handlers) == 0:
        handler = logging.StreamHandler()
        handler.setFormatter(formatter)
        top_level_logger.addHandler(handler)

    # Rotating log file
    os.makedirs(config["log_dir"], exist_ok=True)
    path = os.path.join(config["log_dir"], file_name)
    if config["watch_log_file"]:
        # If we rotate the log file via logrotate.d, let's watch the file
        # so we can automatically close/reopen on move.
        handler = logging.handlers.WatchedFileHandler(path)
    else:
        # Avoid using WatchedFileHandler during notarization poller unittests
        handler = logging.FileHandler(path)
    handler.setFormatter(formatter)
    top_level_logger.addHandler(handler)
    top_level_logger.addHandler(logging.NullHandler())