0

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

在这里,我看到,只要在 Try.txt 中输入了额外的行并保存,我是否给出 --lines=1 或 2 或 0,它正在读取整个 Try.txt 并将其转储到输出文件中。同样,当我向 Try.txt 添加一行时,它会读取整个文件内容,而不仅仅是最后一行,并将其附加到输出中前一个内容的末尾,知道这里可能出了什么问题,为什么 tail 没有只读取最后 1 行(或指定的 n 行)我在输入文件的每一行末尾输入了 enter 吗?

4

1 回答 1

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

lines=1 仅适用于现有文件;如果用新文件替换文件,则会使用整个文件 - 这就像日志轮换。

于 2014-06-19T03:23:47.877 回答