Ejemplo n.º 1
0
 def __init__(self):
     from common.YamlConfig import AppConfig
     self.formatter = SchemeFormatter()
     self._static_values = {'date': AppConfig.get_starttime()}
     for fileformat in (
             self.fsdump_fileformat,
             self.fsdump_hash_fileformat,
             self.pgdump_fileformat,
             self.pgdump_hash_fileformat,
     ):
         self._check_noncontex_params_presence(fileformat)
Ejemplo n.º 2
0
 def validate_time(self, period_name, period):
     cron_expr = period.get('cron')
     if not cron_expr:
         self.logger.error(
             'Отсутствует cron выражение для периода %s',
             period_name,
         )
         return False
     try:
         job = CronExpression(cron_expr)
         time_tuple = AppConfig.get_starttime().timetuple()[:5]
         return job.check_trigger(time_tuple)
     except Exception as e:
         self.logger.error(
             'Ошибка при проверке на совпадение времени cron выражению %s, %s',
             cron_expr,
             str(e),
         )
         return False
Ejemplo n.º 3
0
def configure_logging(verbose=False):
    """Конфигурирует логирование для выполнения заданий/действий.

    Инициализирует и добавляет хэндлеры для логирования.
    Следующие хэндлеры создаются:
        - log_default - INFO, в файл.
        - log_debug - DEBUG, в файл.
        - trigger - >=WARNING, в триггер файл, если он указан в конфиге.
        - stdout - DEBUG, в консоль, если указан параметр verbose.

    Args:
        verbose: Логическое значение, логировать в stdout.

    """
    try:
        full_name = '{region}-{project}-{servername}'.format(
            region=AppConfig._region,
            project=AppConfig._project,
            servername=AppConfig.get_server_name(),
        )
    except AttributeError:
        full_name = 'created-with-error'

    log_filename = '{full_name}-{time}.log'.format(
        full_name=full_name,
        time=AppConfig.get_starttime_str(),
    )
    log_debug_filename = '{full_name}-{time}-debug.log'.format(
        full_name=full_name,
        time=AppConfig.get_starttime_str(),
    )

    log_path_info = get_log_dirpath(
        subdir=AppConfig.get_starttime().strftime('%Y'), )
    log_path_debug = get_log_dirpath(subdir='debug')

    handlers = [
        get_default_file_handler(
            full_name,
            os.path.join(log_path_info, log_filename),
        ),
        get_debug_file_handler(
            full_name,
            os.path.join(log_path_debug, log_debug_filename),
        ),
    ]

    if verbose or AppConfig.conf().get('logging', {}).get(
            'use_console', False):
        # Инициализация хэндлера консоли, если стоит verbose или use_console.
        handlers.append(get_console_handler(full_name))

    if get_trigger_filepath():
        # Инициализация хэндлера триггера, если к нему указан путь.
        handlers.append(get_trigger_handler())

    logger = logging.getLogger()
    logger.setLevel(logging.DEBUG)

    for log_handler in handlers:
        logger.addHandler(log_handler)