snprintf(current, remain_len, "[%zx] %s %s(%s:%zu)", (ssize_t)GetCurrentThreadId(), action, func, file, line);

==>

    snprintf(current, remain_len, "[0x%08x] %s %s(%s:%06u)", (ssize_t)GetCurrentThreadId(), action, func, file, line);