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