foo() { while IFS='' read -r line; do echo "$(date) $line" >> file.txt; done; };
It creates a function which reads one line of raw (-r
) input from stdin. IFS=''
prevents ignoring blank lines.
It, then, prepends each line with a timestamp.
Test it
echo 42 > >(foo)
or with tee
echo 42 | tee >(foo)