CAF::Render to render structured text

... with `try_log`, `maybe_log` or `log_if_needed` being better names than `do_log`. ;)