Поток SpringXD с исходным кодом Tail снова и снова считывает ВСЕ строки в файле, а не только последние n строк.

stream create --name TailTest --definition "tail --name=/Users/name/Documents/SpringXD/PoC/input/Try.txt --outputType=text/plain --lines=1 |file --name=output --dir=/Users/name/Documents/SpringXD/PoC/output --mode=APPEND" --deploy

Здесь я вижу, что независимо от того, задаю ли я --lines=1, 2 или 0, как только в Try.txt вводится дополнительная строка и она сохраняется, она считывает весь Try.txt и выгружает его в выходной файл. Опять же, когда я добавляю строку в Try.txt, он делает то же самое, считывает все содержимое файла, а не только последнюю строку, и добавляет его в конец предыдущего содержимого в выводе, любая идея, что здесь может быть не так, почему хвост не читать только последние 1 (или указанные n) строки. Я ставлю ввод в конце каждой строки во входном файле?


person user3754631    schedule 19.06.2014    source источник


Ответы (1)


Похоже, вы заменяете файл, когда говорите «и он сохранен».

Tail следует за существующим файлом и, да, он ожидает, что новая строка завершит новое сообщение.

Я только что провел тест, и он работает нормально...

xd:>stream create --name foo --definition "tail --lines=1 --name=/Users/foo/Documents/foo.txt | log" --deploy

регистрирует последнюю строку файла,

23:15:58,925  INFO SimpleAsyncTaskExecutor-1 sink.foo - sdsd

потом

$ echo foo >> ~/Documents/foo.txt

(который добавляет foo\n к файлу)

приводит к

23:17:07,744  INFO SimpleAsyncTaskExecutor-1 sink.foo - foo

Строки=1 применяются только к существующему файлу; если вы заменяете файл новым, используется весь файл - это похоже на ротацию журнала.

person Gary Russell    schedule 19.06.2014
comment
Спасибо. Теперь отлично работает с эхом. Раньше в Mac, если я добавляю строки в файл и нажимаю Enter в конце строки, а затем сохраняю этот файл, похоже, это не помогает хвостовому потоку. Когда я использовал эхо для записи строк в файл, который потребляет хвостовой поток, он работает нормально. Я предполагаю, что клавиша ENTER в Mac, похоже, не вызывает символ новой строки в конце, который вызвал эту проблему. - person user3754631; 19.06.2014