log_session_lvl is suitable for performance critical places where in most cases, the log is turned off by level. If the session is const and the level is greater than session->lvl, the whole function will be optimized out.
Compiler may do more optimization when the parameter is const.
The first parameter of memmove is the dst, not src. Besides, fix the wrong move size.