The trouble with using 1>out_err.log 2>>out_err.log is that it creates two separate open file descriptions for your target file, one for stdout and one for stderr. They both have their own write position and write mode (regular vs. append).
The exact outcome in this case depends on the order in which messages are written, just as if two separate commands were writing to that file. If stderr is used to write to the file, the write goes to the end of the file due to append mode, but the write position of stdout does not get updated. Then, when the file is written using stdout, it will overwrite what was written previously. (Furthermore, "first" might not match what you would see if you ran the same command on the console.)
The conventional and safe approach in this situation is to first redirect stdout to your desired log file, and then use 2>&1 to redirect stderr to the same open file description as stdout. This only opens the file once, creating a duplicate file handle for stderr, so that both stdout and stderr share the write position.
rsync -a --exclude cache/ src_folder/ target_folder/ > out_err.log 2>&1