Example #1
0
def info(hash):
    if hash == '0':
        try:
            schedules = crontab_manager.get_tasks_with_info()
        except Exception as exc:
            app.logger.error('Ошибка при получении crontab: %s', exc)
            flash(str(exc))
            schedules = []
        return render_template('info.html',
                               full_name=AppConfig.get_server_name(),
                               remote=False,
                               schedules=schedules,
                               sorted_schedules=sorted(schedules),
                               actions=AppConfig.conf().get('actions'),
                               sorted_actions=sorted(
                                   AppConfig.conf().get('actions')),
                               logs=Logging.get_logs_list())
    else:
        s = RemoteServers.find_server(hash)
        if s is None or not s.state:
            return redirect(url_for('servers'))
        resp = RemoteServers.get_remote_server_config(s.url)
        if len(resp) < 2:
            from collections import defaultdict
            flash(resp.get('status', 'Возникла неизвестная ошибка'))
            resp = defaultdict(dict)
        return render_template('info.html',
                               full_name=resp['full_name'],
                               hash=s.hash,
                               remote=True,
                               schedules=resp['schedules'],
                               sorted_schedules=sorted(resp['schedules']),
                               actions=resp['actions'],
                               sorted_actions=sorted(resp['actions']),
                               logs=resp['logs'])
Example #2
0
def get_server_config():
    result = {
        'full_name': AppConfig.get_server_name(),
        'schedules': crontab_manager.get_tasks_with_info(),
        'actions': AppConfig.conf().get('actions'),
        'logs': get_logs_list()
    }
    return result
Example #3
0
def get_server_info():
    result = {}
    result['name'] = str(AppConfig.get_server_name())
    result['flask'] = AppConfig.flask_on
    try:
        tr_file = get_trigger_filepath()
        if os.path.exists(tr_file):
            result['msg'] = 'триггер-файл'
            with open(tr_file, 'r') as trigger:
                result['errors'] = trigger.readlines()
            if not 'ERROR' in result['errors']:
                result['errors'] = ''
                result['msg'] = 'ок'
        else:
            result['msg'] = 'нет триггер-файла'
            result['errors'] = ''
    except Exception as e:
        result['msg'] = 'ошибка обработки запроса'
        result['errors'] = e.__repr__()
    return result
Example #4
0
def get_log(dir, name):
    return render_template('log.html',
                           full_name=AppConfig.get_server_name(),
                           dir=dir,
                           log=Logging.get_log_content(dir, name))
Example #5
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)