use the C style printf functions to format log messages. we also now handle the formatting in the thread which called the logger so we avoid va_list copy slooch, and theoretically this should not be slow as we are not IO-bound.