I'm getting literally hundreds and hundreds of these lines appearing in the Xcode console when running the app.
What's the cause? Too much logging? (if so this didn't used to appear with earlier version of Xcode, I'm currently running Xcode 16.2)
How to do this: "set IDELogRedirectionPolicy to oslogToStdio in the environment of the executable."
And what does doing that do?
<snip>
1 log/signpost messages lost due to high rates in live mode recording. To guarantee delivery of all logs, set IDELogRedirectionPolicy to oslogToStdio in the environment of the executable.
1 log/signpost messages lost due to high rates in live mode recording. To guarantee delivery of all logs, set IDELogRedirectionPolicy to oslogToStdio in the environment of the executable.
<snip>
This message indicates that Xcode is currently asynchronously streaming logging from your process (and dropped a log) rather than synchronously collecting logging (and therefore applying back pressure on your process). That said streaming logging is not the default behavior (usually), indicating your workflow is likely falling into one of these categories.
- You are attaching to an already running process.
-
If this is the case then we will have to perform streaming since we are not able to inject our libraries into the process that synchronously collect logging and therefore you may see this message when the data rate becomes too large and we have to drop logs. (The dropped log may have been a system log that we would have thrown out anyway but since it was dropped we don't know)
-
If this is your case then there is nothing that can be done other than streaming the logs in console.app where there is a bit more control on back pressure while still streaming.
- You have set the
IDEPreferLogStreaming=YES
environment variable set in your scheme settings.
-
If this has been set and you are launching your process through Xcode then we will consider that you have decided you do not want us to inject the library and would like us to collect logging though streaming to limit perf impact or avoid any conflicts with the injected library.
-
If this is your case then you can simply remove that environment variable to go back to the default synchronous collection method.