You could use dd along the lines of:
dd if=log skip=xK bs=1M which would skip x * 1024 blocks of size 1M (2^20). See dd(1) for details on its handling of units.
If you'd like to automate the binary search, assuming your log has the usual formar <date> [data] you can pipe the output to head -n 2, check the date on the beginning of the second line (which - under the reasonable assumption of "normally" long lines - will be complete) and decide what half you want.