Fix: Use early-return in ws_log()
Allow NULL as etc value
Reimplemented logger for less overhead