Your problem is not "buffer size". If you are using a command which reads one line at a time, it will read even long lines, but if the input is more than one line, it will only read the first line.
Let's rephrase this problem. How do you know when something is more than one line? Because the next line is then not a date stamp. So you can create a simple parser for this format, which recognizes everything up to the next date stamp as one input record.
This is probably best done with a scripting language such as awk or Perl or Python, but just for the sake of argument, here's a quick and dirty solution in shell script:
#!/bin/sh
date=
input=
nl="
" # yes, that's opening quote, newline, closing quote
while read line; do
case $line in
*day\ [0-9][0-9]\ *\ [12][0-9][0-9][0-9]\ *)
# warning! y3k problem
# warning! fragile matching, would be better with regex
# warning! basically untested code anyway
case $date in '') ;;
*) echo "Result for '$date'":
echo "$input" ;;
esac
input=
date=$line
;;
*)
input="$input${input:+$nl}$line"
;;
esac
done
# whatever is left at end of file is a result too
echo "Result for '$date'":
echo "$input"
Your question is not well-defined. Buffer size of what? What command are you using to read the output? If it has a limit on how long lines it will read, can you find a version which has no such limit?
(For example, the GNU coreutils tools are often better in this regard than whatever equivalent tools shipped with your commercial OS.)