That was my mistake, stderr should of course have gone to logfileerr and sys.stderr.

But currently, stderr is only going to a log file if roslaunch is running in remote child mode (is_child_mode() returns true on line 229). That means error logs are only sent to screen, never logged to file (also says so in comment on line 217: # note: logfileerr: disabling in favor of stderr appearing in the console).