"making one HTTP post for every error is very wasteful."
We implemented this where I work many years back, and as long as you are keeping on top of the errors this isn't a problem.
If you are having to buffer your errors before sending them off to be logged because you are noticing a drain on your resources, you're doing it wrong.