Android - How can I view and examine the Android log?

Android 4.1 and newer

The preferred way is to download the SDK and use adb logcat (requires to activate "developer options" on device).

There are apps available for viewing the full system log, however they only work on rooted devices or require issuing a manual command via adb to make them work. For more information view see this question.

Android 4.0 and older

You can either download the SDK and use adb logcat or get Logcat Extrem from the Google Play Store, which shows the log directly on your phone.


Log-File locations

There are several directories where logs (including those from crashes) might appear -- not all of them are standardized (i.e. some may be ROM-specific).

  • /data/anr: Some trace files seem to get here (Dalvik writes stack traces here on ANR, i.e. "Application Not Responding" aka "Force-Close"; see e.g. log excerpts here)
  • /data/dontpanic seems to be a standard location (AOSP), and contains some crash logs including traces (see e.g. viaForensics and StackOverflow)
  • /data/kernelpanics is another location -- not having had any "kernel panic" on my Android devices, I saw no content there yet.
  • the /data/panic/panic_daemon.config may point to other locations configured -- on my Droid 2 it mentions /sdcard/panic_data/
  • mentioned Droid 2 also has a /data/panicreports directory (empty here)
  • /data/tombstones may hold several tombstone_nn files (with nn being a serial, increased with every new file). As tombstones are placed for the dead, it is done here for "processes died by accident" (i.e. crashed) -- and it is what is referred to as "core dumps" on Linux/Unix systems. However, not all apps create tombstones; this must be explicitly enabled by the developer (see Debugging Android Core Dumps).

There may be some more locations which escaped me; but as most logging is done on tmpfs, these data are lost with a reboot, and would not match the OPs question.

Log commands to use with a terminal app (or adb)

Several commands can get you tons of information. For most of them, it is to recommend to re-direct them to a file (> filename.ext) or pipe them through a filter (| grep search-for-this):

Kernel log

The following works without root:

$ dmesg
<6>[82839.126586] PM: Syncing filesystems ... done.
<7>[82839.189056] PM: Preparing system for mem sleep
<4>[82839.189361] Freezing user space processes ... (elapsed 0.05 seconds) done.
<4>[82839.240661] Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
<snip>

Logcat

Here you can e.g. specify what area you are interested in -- radio, events...

# logcat -b events
I/am_create_service( 3457): [1085416560,nitro.phonestats/.widget.WidgetProvider4x1$WidgetUpdateService4x1,,3721]
I/am_destroy_service( 3457): [1085416560,nitro.phonestats/.widget.WidgetProvider4x1$WidgetUpdateService4x1,3721]
I/notification_cancel( 3457): [nitro.phonestats,4,0] 
<snip>

Getting device info

And tons of it: Device specifics, account information, services...

$ dumpsys
Currently running services:
  LocationProxyService
  SurfaceFlinger
  accessibility
  account
  activity
<snip>
DUMP OF SERVICE account:
Accounts:
  1 Account {[email protected], type=com.google}
<snip> 

$ dumpstate
========================================================
== dumpstate: 2012-08-18 23:39:53
========================================================

Build: Gingerbread GWK74 - CyanogenMilestone2
Bootloader: 0x0000
Radio: unknown 
<snip>
------ MEMORY INFO (/proc/meminfo) ------
MemTotal: 487344 kB
MemFree: 10436 kB 
<snip>

All-in-One

Make a big ball with everything together, from logcat to dumpstate:

$ bugreport > /mnt/sdcard/bugreport.txt

I'm pretty sure you really want to redirect that last command... xD

Something about permissions

P.S.: Naturally, access to those information may require root, as most of the sources are located on internal storage.


A found that CatLog displays the Android log a little bit better then aLogcat. Besides adb logcat, that's what I am using.

Tags:

Logging