Friday, June 26, 2020

Console, the Vital Tool That Apple Abandoned

Howard Oakley:

What makes me most angry at what has happened to the log and Console is that Apple’s concepts and engineering are outstanding: the log has a remarkably low latency, retains a great deal of invaluable data in structured and compact format, and should be an essential resource to anyone who takes their Mac seriously. Instead of building on those unique strengths, Apple has provided token support which must leave even its own engineers wishing for better, as they wade through the logarchives supplied in sysdiagnose dumps.

macOS 11 continues to improve the logging APIs, but from what I can tell it’s still difficult to actually use the log from Console.

Previously:

7 Comments RSS · Twitter

Seems to be a case of what Marco Arment describes as “drive-by updates”. In principle, Sierra’s unified logging should’ve been a huge improvement: higher performance, nicer APIs, privacy, aggregating data from other devices wirelessly, so much more.

In practice, Console has become virtually useless if you don’t know what to filter for. Trying to figure out why something goes wrong? Well here comes healthd or hidd or whateverd to first make you spend the next ten minutes filtering out noise about all kinds of things you didn’t care about, and if you’re lucky, you filtered just the right amount to get to the point. Probably not, though. And even if you did, Console probably didn’t collect it because it happened before you launched it.

It’s such a firehose, I don’t know how anyone can make sense of it. And it’s… really disconcerting how many errors and warnings appear almost every second. Is my system broken? No, that’s just where we are in terms of software quality. (Were things better twenty years ago? Maybe not. Maybe Apple just wasn’t as transparent in terms of logging.)

I have log stream --style syslog --predicate 'senderImagePath contains[cd] "TimeMachine"' --info --debug in my fish autocomplete in case I want to figure out why Time Machine is failing me again, or why it’s taking so long; its logs are pretty detailed (got a lot better in Catalina, even), and I wish the UI could learn a little from that.

And I have a few filters set up in Console. But there’s so much Apple could’ve done to make this nicer.

For example. So you have the notion of “subsystems”. Why not provide a drop-down that automatically fills with subsystems that have recently been logged from, to make filtering easier? Same with processes. Make it easier to drill down on what I’m looking for.

(So what makes this a "drive-by update"? Well, they clearly put a lot of work into the underlying APIs and concepts. Then they made a front-end for it. But by the time someone realized the front-end wasn't great, they had already moved on to the next big thing.)

Console is the epitome of Apple’s problem with tools and its support for users and other third-parties. It turns what should be an enormous strength of macOS into something that, over the last few years, has become so repellant that most have just given up, and carry on blindfolded and in the dark.

This is me. It's been 4 years and I've completely stopped opening Console.app, it's worse than useless. I have a couple of shell aliases to dump log output from some time range as a last resort, but mostly I'm flying blind compared to versions of OSX where Console was usable.

As a development and troubleshooting tool, Console.app has been utterly useless for the last ~5 years.

However, the problem isn’t the Console app; the app is fine. It’s the vast, vast quantities of worthless spew generated every second by numerous [Apple] processes. It’s like every development team in Apple neglected to turn off their internal debug logging flags during the final release build. The app isn’t designed to cope with that, and frankly it shouldn’t be.

The root of the problem is Apple’s internal development, QA, and release policies, and that’s what they need to fix, at the source. Log what needs to be logged in a running production system, and that’s all.

--

TL;DR: Developers are bums.

"This is me. It's been 4 years and I've completely stopped opening Console.app, it's worse than useless."

Me as well. Once and awhile I forgot and go back in and then I realize I made a huge mistake.

"For example. So you have the notion of “subsystems”. Why not provide a drop-down that automatically fills with subsystems that have recently been logged from, to make filtering easier? Same with processes. Make it easier to drill down on what I’m looking for."

Or a way to say "Ignore everything unless the logging came from process X or on process X's behalf by some subsystem".

At least for the filtering by process, you can do that (I was troubleshooting Photos literally yesterday). Scroll though console to find a message from the process you want to only show, and right click on it, and click on “Show Process ‘XYZ’”. That will limit the console to only that processes messages.

That said, yeah, Console should be a little easier to use; but there really is waaayyyyy too much noise comming from all the various processes.

Leave a Comment