Dropbox API calls (and not only) retrieving array of information (such as 2/team_log/get_events) are asynchronous. Which mean it's not clear when exactly the information you are querying gonna be available and in what "pieces" size. That's why there is "has_more" in the result.
has_moreBoolean Is true if there may be additional events that have not been returned yet. An additional call to get_events/continue can retrieve them. Note that has_more may be true, even if events is empty.
What exactly you have tried? Did you get in loop with 2/team_log/get_events/continue till the moment when "has_more" becomes false? 🤔 Make sure on each loop's pass you use the cursor from the last call result (either get_events or get_events/continue). Don't use the same cursor! What is the result of your last call? You didn't post it.
@liftbox Здравко is correct; the number of events returned per single response is not guaranteed. Due to various implementation details, a single page may even contain zero events. In any case, your app should always check the 'has_more' value and then call back to /2/team_log/get_events/continue if it's 'true', and so on each time, supplying the latest returned 'cursor'.