Stopping, pausing and restarting tasks for accurate time-keeping

I am using tasks to keep track of the time spent on different tasks. I change a task from TODO to DOING to start the timer, and from DONE to stop the time and get the total time spent on that task. So far, so good.
Sometimes, (too often) I get interrupted and need to pause one taks to switch to something else. Currently, I mark the running task as TODO, deal with the interruption, to then change the task’s status to DOING again, in the hope the timer will continue from where it left off, to give me the total time I actually spent on the task.
In practice this works sometimes, but far from reliably. Often I find that only the first cycle is actually recorded in the LOGBOOK entries, and I have to manually edit the page with the task on it to add the missing runs. Sometime the first two cycles are there, but no others.
Am I doing something wrong? Is there some functionality I may be missing around pausing tasks?

Alternatively, should we ask for easier access to the LOGBOOK entries, so manual adjustments can be done from inside Logseq itself?

I think I may have just discovered one reason for missing LOGBOOK entries: if I don’t move the cursor out of the block after a status change (from DOING to TODO or DONE) but just leave it inside the block while doing something outside Logseq, the status change is not seen by the system (though sometimes it is?). So, one note to self: always move the cursor out of a task block after a status change, to make sure the system has seen and recorded it.