Currently zkServer.sh will redirect output to zookeeper.out using a simple shell redirect.
When logrotate (and similar tools) are used to rotate the zookeeper.out file with the 'copytruncate' semantics (copy the file, truncate it to zero bytes) the next write results in a sparse file with the write at the offset of the last file. Effectively the log file is now full a null bytes and it is hard to read/use the file (and the rotated copies).
Even worse, the result is zookeeper.out file only gets "larger" (though sparse) and after a while on a chatty system it takes significant CPU resources to compress the file (which is all nulls!)
The simple fix is to append to the file (>>) instead of a simple redirection (>)
This issue was found in a 3.3.5 production system, however code in trunk has the same issue.