Beispiel #1
0
def setup_agent_logger(log_name, log_level=None, log_dir=None):
    if log_level is None:
        log_level = os.environ.get('AGENT_LOG_LEVEL') or 'DEBUG'

    if log_dir is None:
        log_dir = os.environ.get('AGENT_LOG_DIR')

    setup_logger_base(log_level, log_dir)

    worker_logger = logging.getLogger('worker')
    dispatch_logger = logging.getLogger('dispatch')

    for logger in [worker_logger, dispatch_logger]:
        logger.setLevel(log_level)

    if log_dir:
        log_file = os.path.join(log_dir, '{0}.log'.format(log_name))
        file_formatter = logging.Formatter(
            ' %(asctime)-15s - %(name)s - %(levelname)s - %(message)s')

        # On the manager, we for sure have a logrotate policy.
        if is_management_environment():
            file_handler = logging.handlers.WatchedFileHandler(log_file)
        else:
            # On linux agents, we may have logrotate in place in the future.
            # On Windows agents, there's no reliable logrotate alternative.
            file_handler = logging.handlers.RotatingFileHandler(
                filename=log_file,
                maxBytes=DEFAULT_LOG_FILE_SIZE,
                backupCount=DEFAULT_LOG_BACKUPS)
        file_handler.setLevel(log_level)
        file_handler.setFormatter(file_formatter)

        root_logger = logging.getLogger()
        root_logger.addHandler(file_handler)
Beispiel #2
0
def setup_agent_logger(log_name,
                       log_level=None,
                       log_dir=None,
                       max_bytes=None,
                       max_history=None):
    if log_level is None:
        log_level = os.environ.get(ENV_AGENT_LOG_LEVEL) or 'DEBUG'

    if log_dir is None:
        log_dir = os.environ.get(ENV_AGENT_LOG_DIR)

    setup_logger_base(log_level, log_dir)

    worker_logger = logging.getLogger('worker')
    dispatch_logger = logging.getLogger('dispatch')

    for logger in [worker_logger, dispatch_logger]:
        logger.setLevel(log_level)

    if log_dir:
        log_file = os.path.join(log_dir, '{0}.log'.format(log_name))
        file_formatter = logging.Formatter(
            ' %(asctime)-15s - %(name)s - %(levelname)s - %(message)s')

        # On the manager, we for sure have a logrotate policy.
        if is_management_environment():
            file_handler = logging.handlers.WatchedFileHandler(log_file)
        else:
            # These are only needed on agents, as mgmtworker
            # has logrotate available.
            # We explicitly assume that AGENT_LOG_MAX_BYTES and
            # AGENT_LOG_MAX_HISTORY exist in the environment, because
            # we don't want to deal with hard-coded defaults at this point
            # in the code flow. We're OK to assume that these environment
            # variables are defined in the agent's service configuration file
            # that had been rendered during agent installation.
            if max_bytes is None:
                max_bytes = int(os.environ[ENV_AGENT_LOG_MAX_BYTES])

            if max_history is None:
                max_history = int(os.environ[ENV_AGENT_LOG_MAX_HISTORY])

            # On linux agents, we may have logrotate in place in the future.
            # On Windows agents, there's no reliable logrotate alternative.
            # So, use Python's RotatingFileHandler which works OK on both.
            file_handler = logging.handlers.RotatingFileHandler(
                filename=log_file, maxBytes=max_bytes, backupCount=max_history)
        file_handler.setLevel(log_level)
        file_handler.setFormatter(file_formatter)

        root_logger = logging.getLogger()
        root_logger.addHandler(file_handler)