Interpreting the implementation of the android Log Mechanism: (2) Java domain output log
Tian haili @ csdn
Android provides a user-level lightweight Log Mechanism. Its implementation runs through Java, JNI, local C/C ++ implementation, Linux kernel driver, and Other Android layers, it is simple and clear enough to explain the case. This seriesArticleThis article explains the internal implementation mechanism of the log mechanism. This article is part two of the series.ProgramHow to output log information to the log system.
Log output help class
The android Java program outputs logs through the Android. util. Log class and lists the commonly used static log methods.
Generally, to output log information, you can directly call log. V ()/log. D ()/log. I ()/log. W ()/log. e. There are so many different methods here, which is also the log classification. Log classification is defined as the static constant member of log, and the priority of log is sorted by number. The priority of a large number is higher. While log. what a terrible failure is recorded by WTF (), and this error is reported not only in logs, but also on the interface, the current process may be killed.
If the log priority to be output is lower than the current priority, the log information is not displayed. Generally, before printing logs using the LOG method in Java programs, you should first use isloggable () to determine whether this level can be recorded.
In addition, log. println () can be used to match log. V ()/log. D ()/... And other methods, but when using it, you must specify the corresponding priority.
Log-like implementation
The implementation of Android. util. log is relatively simple.
The constructors of the android. util. Log class are private and will not be instantiated. They only provide static attributes and methods.
Android. util. the implementation of various log record methods of log relies on the Implementation of native println_native (), log. V ()/log. D ()/log. I ()/log. W ()/log. E () eventually calls println_native (). For example, the implementation of log. D:
Public static int D (string tag, string MSG) {return println_native (log_id_main, debug, Tag, MSG );}
The native method println_native () is implemented in C/C ++ through JNI. For details, see section 3: JNI and C/C ++ in this series.
[This series of articles]
Interpreting the implementation of the android Log Mechanism: (1) implementation architecture of log
Interpret the implementation architecture of the log mechanism.
Interpreting the implementation of the android Log Mechanism: (2) Java domain output log
Explain how the android Java program outputs log information to the log system.
Interpreting the implementation of the android Log Mechanism: (3) Writing Device Files in JNI and native Domains
Interpret the JNI Implementation of Android. util. log and how to operate the device file to write log information in the local implementation of C/C ++.
Interpreting the implementation of the android Log Mechanism: (4) Log Device-driven Logger
Interpret the implementation of the device driver logger in the Linux kernel. Logger is a misc Driver written by Android for Linux. It uses cyclic queues to implement readers/writers. Logger is the core of the implementation of the entire log mechanism.
Interpreting the implementation of the android Log Mechanism: (5) Obtaining the log program logcat
Explains how the application logcat obtains log information through open ()/select ()/read () of the device file.
Interpreting the implementation of the android Log Mechanism: (6) using log in the C/C ++ domain
This article explains how to use the Log Mechanism in the C/C ++ program of Android to record log information.