I think the solution is to make console_write
(called by printf and IOLog indirectly) also call kprintf.
It seems to work and it's much faster than serial port which one would expect from a 800Mbps connection compared to a 115.2Kbps.
One problem with this solution is that they both call os_log_with_args(OS_LOG_DEFAULT, OS_LOG_TYPE_DEFAULT, ...)
. That makes each message appear doubled in the output of dmesg
. Maybe I should try making console_write
call _doprnt(..., PE_kputc, ...)
or make console_printbuf_putc
call PE_kputc
.
I don't see the IOLog messages in the output of log stream
. Is that to be expected, or do I need special arguments for log stream
to show IOLog messages? Are IOLog messages stored to a /var/log
file? They are not in system.log
.
Maybe the oslog documentation should mention some of this non-oslog stuff to show how they relate. I see a bunch of trees but can't see the forest.