Skip to content

Live logs

The device writes a lot. Live logs is the stream, plus the filters that make it readable.

  1. Select the device.
  2. Open Live logs.
  3. Optionally scope to an app, then drive the app on the device.

Output appears as it is written. There is nothing to enable on the phone and nothing to add to your build.

Three filters, and you generally want more than one:

  • By app. Restricts to one process. Start here.
  • By keyword. Substring match across the line. Your own log prefix is the most useful thing you will ever type in this box.
  • By process. Broader than by app — useful for chasing a system daemon that is complaining about your app rather than the app itself.

The system logs heavily, and a lot of it is noise you learn to ignore. Some of it is not:

Line Worth reading
Memory pressure warnings Yes — often the last thing before a jetsam kill
Watchdog / hang reports Yes — the main thread was blocked long enough to be noticed
Network reachability changes Yes, when chasing a request that failed intermittently
Layout constraint conflicts Yes, and they are usually your fault
Routine daemon chatter No

Save writes the current view to a text file — filter included, so a saved log is the filtered log, not the raw firehose. That is usually what you want to attach to a ticket, but it is worth stating in the ticket which filter produced it.

For a failure you can reproduce, the useful capture is: clear, reproduce, stop, save. A file starting ten minutes before the event is much harder for the next person to read.

Live logs show what the app chose to say. When the app said nothing — it froze, or it vanished — the log ends without explaining itself. Two follow-ups:

  • A sudden end with no exception usually means the process was killed. Check memory in a performance capture; a jetsam kill after a memory climb looks exactly like this.
  • A crash writes a report even when it logs nothing. See Crash logs.

Crash logs · Performance monitoring · FPS and jank