Перейти к содержанию

Вопрос

Опубликовано

Как получить лог через REST API?

Пробовал по аналогии с CLI запросы get /rci/show/log /rci/show/log/once /rci/show/log/10 /rci/show/log/10/once - отвечает 404 Not Found

Рекомендуемые сообщения

  • 1
Опубликовано
В 05.03.2021 в 18:39, fps сказал:

Как получить лог через REST API?

Пробовал по аналогии с CLI запросы get /rci/show/log /rci/show/log/once /rci/show/log/10 /rci/show/log/10/once - отвечает 404 Not Found

GET-запрос не работает потому что это т.н. "background process" и он еще не запущен.
См. B.1.2.3 Background processes в Command Reference Guide:
image.png


Чтобы получить лог необходимо:

  • отправить POST-запрос к rci/show/log с аргументами команды в JSON в качестве данных (без аргументов -- "{}"; другой пример "{"max-lines": 100}"). Этот запрос вернет весь текущий лог.
  • далее отправлять GET-запросы к rci/show/log (будет приходить объект вида {continued: true, <новые сообщения, если они появились с момента последнего опроса>}
  • в момент, когда вы хотите прекратить получение сообщений из лога -- отправить запрос с методом DELETE
  • 1
Опубликовано
8 минут назад, fps сказал:

Если отправить POST-запрос с пустым JSON-объектом "{}" многократно без команд DELETE, то еще один background process будет запускаться каждый раз и устройству рано или поздно поплохеет? Или это нормальная практика?

Нужно провести эксперимент. Особенность лога в том, что он продолжает присылать признак "continued" бесконечно, в отличие от других подобных процессов.("show site-survey", "components commit", ...). Отсутствие признака "continued" в ответе на GET-запрос (или на исходных POST-запрос), значит, что процесс в системе завершен (и последующие GET-запросы снова будут возвращать 404).

Я не знаю случаев когда устройству плохело бы из-за запросов лога, но я запустить много копий получения лога не пробовал.

14 минуты назад, fps сказал:

Если отправить POST-запрос с пустым JSON-объектом "{}" однократно, то потом до перезагрузки устройства можно слать GET? Или background process через какое-то время завершится?

В случае с логом получение новых событий через GET-запрос после запуска должно работать пока не протухнет сессия авторизации (она протухает через 10 минут отсутствия активности).

 

16 минут назад, fps сказал:

Какой правильный способ получить последние 100 строк лога безотносительно предыдущих действий? По аналогии с cli командой "show log 100 once"

Гм, похоже, что достаточно отправить POST-запрос к rci/show/log с такими данными:
 

{
    "once": true,
    "max-lines": 100
}

Этот запрос вернет 100 последних сообщений и при этом фоновый процесс не остается висеть после ответа. Надеюсь, что это подойдет)

  • 1
Опубликовано
41 минуту назад, fps сказал:

Больше никакие параметры не поддерживаются? 

Запросить только ошибки {"once": true, "max-lines": 100, "level": "Error"} не получится, только фильтровать на стороне клиента? 

Запросить только ошибки, к сожалению, нельзя. Параметры в REST API повторяют аргументы команды в CLI:
 

(config)> show log

 Usage template:
              log [{max-lines}] [once]

 

  • 0
Опубликовано (изменено)

Спасибо. Так работает.

  • Если отправить POST-запрос с пустым JSON-объектом "{}" многократно без команд DELETE, то еще один background process будет запускаться каждый раз и устройству рано или поздно поплохеет? Или это нормальная практика?
  • Если отправить POST-запрос с пустым JSON-объектом "{}" однократно, то потом до перезагрузки устройства можно слать GET? Или background process через какое-то время завершится?
  • Какой правильный способ получить последние 100 строк лога безотносительно предыдущих действий? По аналогии с cli командой "show log 100 once"
Изменено пользователем fps
  • 0
Опубликовано

Больше никакие параметры не поддерживаются? 

Запросить только ошибки {"once": true, "max-lines": 100, "level": "Error"} не получится, только фильтровать на стороне клиента? 

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.