Difference between revisions of "Android Logging System"

From eLinux.org
Jump to: navigation, search
(Consolidate log system information onto a single page (started))
 
(Overview)
Line 5: Line 5:
  
 
The logging system consists of:
 
The logging system consists of:
* a kernel driver and kernel buffers for storing log messages
+
* a kernel driver and kernel buffers for storing log messages
* C, C++ and Java classes for making log entries and for accessing the log messages
+
* C, C++ and Java classes for making log entries and for accessing the log messages
* a standalone program for viewing log messages (logcat)
+
* a standalone program for viewing log messages (logcat)
* ability to view and filter the log messages from the host machine (via eclipse or ddms)
+
* ability to view and filter the log messages from the host machine (via eclipse or ddms)
  
 
There are four different log buffers in the Linux kernel, which provide logging for different parts of the system.
 
There are four different log buffers in the Linux kernel, which provide logging for different parts of the system.
Line 14: Line 14:
  
 
The four log buffers are:
 
The four log buffers are:
* main - the main application log
+
* main - the main application log
* events - for system event information
+
* events - for system event information
* radio - for radio and phone-related informatio
+
* radio - for radio and phone-related informatio
* system - a log for low-level system messages and debugging
+
* system - a log for low-level system messages and debugging
  
Up until 2010, only the first three logs existed.  The system log was created to put system messages in a separate
+
Up until 2010, only the first three logs existed.  The system log was created to keep system messages in a separate
buffer so that a single verbose application couldn't overrun system messages and cause them to be lost.
+
buffer (outside of '/dev/log/main') so that a single verbose application couldn't overrun system messages
 +
and cause them to be lost.
  
 
== Kernel driver ==
 
== Kernel driver ==

Revision as of 17:14, 14 January 2011

This article describes the Android logging system

Overview

The Android system has a logging facility that allows systemwide logging of information, from applications and system components. This is separate from the Linux kernel's own logging system, which is accessed using 'dmesg' or '/proc/kmsg'. However, the logging system does store messages in kernel buffers.

The logging system consists of:

  • a kernel driver and kernel buffers for storing log messages
  • C, C++ and Java classes for making log entries and for accessing the log messages
  • a standalone program for viewing log messages (logcat)
  • ability to view and filter the log messages from the host machine (via eclipse or ddms)

There are four different log buffers in the Linux kernel, which provide logging for different parts of the system. Access to the different buffers is via device nodes in the file system, in /dev/log.

The four log buffers are:

  • main - the main application log
  • events - for system event information
  • radio - for radio and phone-related informatio
  • system - a log for low-level system messages and debugging

Up until 2010, only the first three logs existed. The system log was created to keep system messages in a separate buffer (outside of '/dev/log/main') so that a single verbose application couldn't overrun system messages and cause them to be lost.

Kernel driver

The kernel driver for logging is called the 'logger'. See Android logger

Logcat command

You can use the 'logcat' command to read the log. This command is located in /system/bin in the local filesystem, or you can access the functionality using the 'adb logcat' command.

Documentation on the use of this command is at: http://developer.android.com/guide/developing/tools/adb.html

Some quick notes:

  • Log messages each have a tag and log level.
    • You can filter the messages by tag and log level, with a different level per tag.
  • You can specify (using a system property) that various programs emit their stdout or stderr to the log.

Resources