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)
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)