For those who aren’t familiar, Console (found in Applications > Utilities) is an application that shows you what’s happening beneath the lovely skin of OS X. Open the application, and you’ll see a combination of status and error messages from any number of sources.
If you’ve never looked at Console before, you might be surprised by just how much stuff gets written there. But with the release of Yosemite, things have really taken a turn for the worse—the amount of stuff written to Console is greater than I recall for prior OS X releases.
As a test, I set up a new Yosemite virtual machine, installed ScreenFlow (and nothing else), then launched and interacted with a number of Apple’s apps for two minutes while recording the screen. The results are quite sobering; here’s what two minutes of Console logging looks like, reduced to a 10-second movie:
As you can see, there are a lot of Console entries in just two minutes.
And what did I do during those two minutes? Here’s a full list of the tasks that generated that output:
- Loaded two web pages in Safari.
- Launched TextEdit, created and saved two documents.
- Launched Calculator and did a couple of calculations.
- Launched Calendar and added an event.
- Launched Chess and made a move.
- Opened two Finder windows and duplicated two files from one folder to another.
- Launched Dictionary and looked up a word.
And that was all. Just those simple tasks added literally screens of data to the Console log. Now consider a real-world system. With more than just Apple’s stock apps. With more than just simple little tasks. As you can imagine, a ton of data winds up getting written to Console.
Is this a problem? It doesn’t seem to cause any performance problems, though I can’t help but think that there has to be some amount of impact from such voluminous logging.
Does it matter?
If there’s no measurable performance impact, does it matter? In my opinion, yes, it matters. Why does it matter? It matters because of “the boy who cried wolf” story: with so much junky output in Console, it’s really hard to spot the real signs of trouble.
Console has, for me, always been the place to go when an app is misbehaving. You may not completely solve the problem with a trip to Console, but you’d often find useful hints as to the problem’s cause. And you could leave Console open, switch back to the app, and watch for any messages as you tried things in the troublesome app.
But now, with the volume of data written to Console, any sort of real-time troubleshooting is almost impossible—the text just scrolls past too quickly. Instead, I use the search box to search for something, and then look through that output for any relevant messages. This works, but I miss being able to watch as actions were occurring.
How could it be fixed?
So what’s the fix? In an ideal world, apps would only spew to console if a debugging switch were set within the app.
That’s how we try to do it with our Many Tricks apps—if you see output in Console, it’s probably from a program that interacted with us, as opposed to something we generated.
We have switches in each app to enable debug logging, as seen above right. (Generally, hold Control and Option to see the logging option in place of Preferences in each app’s menu.) If the switch is off, we try not to write anything to Console.
But there are a lot of apps out there, obviously, and updating them all with similar features seems nearly impossible. Someone on Twitter, I believe, suggested a great solution: a switch in Console that suppresses “status” messages, leaving only the critical stuff to filter through. That way, no apps need to be updated, and users can control what messages they see.
Sadly, I don’t think we’ll see this, either, but I think something’s got to change; there’s no way the amount of cruft being written to Console is necessary on a regular basis.