Writing to a file handle is by default buffered anyway (i.e. unless it's unbuffered (autoflushed) or line-buffered (interactive/terminal)) . As the buffer size is 4k, it doesn't seem to make much sense to do additional buffering yourself at 1k granularity (though maybe that's not the real value you finally intend to use...).
If you want a larger buffer (the 4k cannot be changed without recompiling perl), maybe you could open the log file handle to a scalar, and periodically check its size...
open(my $outfh, '>', \$buf)