why does my interrupt keep firing?

The interrupts are not happening because you disable them in the Log() routine, but never re-enable them.

Graynomad's code does this correctly, but he didn't point out the missing sei() call in your code. Just wanted to make sure you caught this point.