A computer program product comprising a non-transitory machine-readable medium storing instructions that, when executed by at least one programmable processor, cause the at least one programmable processor to perform operations comprising: executing a plurality of transactions in a data storage application; storing log entries according to the plurality of transactions in a plurality of log buffers (420i,ii,-...,n), the log entries being sequentially written into a current log buffer, each of the plurality of log buffers (420i,ii,-...,n) being written to one of a plurality of log partitions according to a round-robin distribution; wherein at least two log buffers (420i,ii,-...,n) written to a single log partition are not consecutive; wherein each log buffer comprises an I/O finished flag indicating that an input / output operation writing the log buffer to a corresponding log partition has been finished; wherein each log buffer comprises a previous I/O finished flag indicating that an immediately preceding log buffer in the round-robin distribution has been written to a corresponding log partition; and assembling, in response to a data recovery event, a sequential list of the log entries in the log buffers (420i,ii,-...,n) and processing the log buffers (420i,ii,-...,n) by a recovery dispatcher to generate a log, - wherein the recovery dispatcher receives the log buffers (420i,ii,-...,n)from individual log partitions and re-orders the log buffers into the original order of log entries, and - wherein the generated log can be used for data recovery by the data storage application. executing a plurality of transactions in a data storage application; storing log entries according to the plurality of transactions in a plurality of log buffers (420i,ii,-...,n), the log entries being sequentially written into a current log buffer, each of the plurality of log buffers (420i,ii,-...,n) being written to one of a plurality of log partitions according to a round-robin distribution; wherein at least two log buffers (420i,ii,-...,n) written to a single log partition are not consecutive; wherein each log buffer comprises an I/O finished flag indicating that an input / output operation writing the log buffer to a corresponding log partition has been finished; wherein each log buffer comprises a previous I/O finished flag indicating that an immediately preceding log buffer in the round-robin distribution has been written to a corresponding log partition; and assembling, in response to a data recovery event, a sequential list of the log entries in the log buffers (420i,ii,-...,n) and processing the log buffers (420i,ii,-...,n) by a recovery dispatcher to generate a log, - wherein the recovery dispatcher receives the log buffers (420i,ii,-...,n)from individual log partitions and re-orders the log buffers into the original order of log entries, and - wherein the generated log can be used for data recovery by the data storage application. - wherein the recovery dispatcher receives the log buffers (420i,ii,-...,n)from individual log partitions and re-orders the log buffers into the original order of log entries, and - wherein the generated log can be used for data recovery by the data storage application.