When restricting messages to a level of Information and a Debug message is written, empty payloads will be generated. I think the OnEmptyBatchAsync() method needs to simply return rather than calling EmitBatchAsync().
public Task OnEmptyBatchAsync() { return Task.CompletedTask; }