带有Tail源的Spring XD流一次又一次地读取文件中的所有行,而不是仅读取最后n行

时间:2014-06-19 01:16:35

标签: tail spring-xd

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添加一行时,它同样读取整个文件内容而不是最后一行并将其附加到输出中先前内容的末尾,任何想法这里可能出错,为什么尾部没有我只读输入文件中每一行末尾的最后一行(或指定的n行)吗?

1 个答案:

答案 0 :(得分: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仅适用于现有文件;如果用新文件替换文件,则使用整个文件 - 这就像日志轮换一样。