9

Я хочу отслеживать файл журнала моего приложения, который, однако, работает не локально, а на платформе SaaS и доступен через HTTP и WebDAV. Таким образом, эквивалент tail -f, который работает для URL-адресов, отлично подходит для меня.

PS Если вам известны какие-либо другие инструменты, которые могут отслеживать удаленные файлы через HTTP, это также может помочь. Спасибо

3 ответа3

10

Для этого может быть специальный инструмент, но вы также можете сделать это с помощью wget. Откройте терминал и выполните эту команду:

while(1); do \
    sleep 2; \
    wget -ca -O log.txt -o /dev/null http://yoursite.com/log; \
done

Это будет загружать файл журнала каждые две секунды и сохранять его в log.txt добавляя вывод к уже существующему (-c означает продолжить загрузку, а -a означает добавить вывод к указанному имени файла). -o перенаправляет сообщения об ошибках в /dev/null/ .

Итак, теперь у вас есть локальная копия log.txt и вы можете запустить tail -f :

tail -f log.txt 
2

Я ответил на тот же вопрос здесь полным сценарием оболочки, который принимает URL в качестве аргумента и tail -f 's it. Вот копия этого ответа дословно:


Это сделает это:

#!/bin/bash

file=$(mktemp)
trap 'rm $file' EXIT

(while true; do
    # shellcheck disable=SC2094
    curl --fail -r "$(stat -c %s "$file")"- "$1" >> "$file"
done) &
pid=$!
trap 'kill $pid; rm $file' EXIT

tail -f "$file"

Это не очень дружелюбно на веб-сервере. Вы могли бы заменить true sleep 1 чтобы быть менее ресурсоемким.

Как и tail -f , вам нужно ^C когда вы закончите смотреть вывод, даже когда вывод сделан.

0

Для достижения этой цели можно использовать локон с опцией диапазона в сочетании с часами:

ДИАПАЗОН

В HTTP 1.1 введены байтовые диапазоны. Используя это, клиент может запросить получение только одной или нескольких частей указанного документа. Curl поддерживает это с помощью флага -r.

watch -n <interval> 'curl -s -r -<bytes> <url>'

Например

watch -n 30 'curl -s -r -2000 http://yoursite.com/log'

Это будет извлекать последние 2000 байтов журнала каждые 30 секунд.

Примечание: для самозаверяющего https используйте опцию --insecure curl

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .