歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android系統開發中LOG的輸出與使用

Android系統開發中LOG的輸出與使用

日期:2017/3/1 10:02:23   编辑:Linux編程

在程序開發過程中,LOG是廣泛使用的用來記錄程序執行過程的機制,它既可以用於程序調試,也可以用於產品運營中的事件記錄。在Android系統中,提供了簡單、便利的LOG機制,開發人員可以方便地使用。在平時開發過程中經常需要與log打交道,所以很有必要了解log的使用方法及簡單的原理。

1、Linux內核的log輸出

在標准的Linux內核開發過程中,使用 printk ,這是一個與printf輸出打印齊名的函數,同樣提供格式化輸出功能,只是其有

打印級別且將信息保存到 /proc/kmsg 日志中,使用cat命令查看其信息[cat /proc/kmsg]

#define KERN_EMERG "<0>" /* system is unusable */
#define KERN_ALERT "<1>" /* action must be taken immediately */
#define KERN_CRIT "<2>" /* critical conditions */
#deinfe KERN_ERR "<3>" /* error conditions */
#deinfe KERN_WARNING "<4>" /* warning conditions */
#deinfe KERN_NOTICE "<5>" /* normal but significant condition */
#deinfe KERN_INFO "<6>" /* informational */
#deinfe KERN_DEBUG "<7>" /* debug-level messages */

2、android中log輸出
Android系統在用戶空間中提供了輕量級的logger日志系統,它是在內核中實現的一種設備驅動,與用戶空間的logcat工具配合使用能夠方便地跟蹤調試程序。

Android系統中的C/C++日志接口是通過宏來使用的。在system/core/include/android/log.h定義了日志的級別:
/*
* Android log priority values, in ascending priority order.
*/
typedef enum android_LogPriority {
ANDROID_LOG_UNKNOWN = 0,
ANDROID_LOG_DEFAULT, /* only for SetMinPriority() */
ANDROID_LOG_VERBOSE,
ANDROID_LOG_DEBUG,
ANDROID_LOG_INFO,
ANDROID_LOG_WARN,
ANDROID_LOG_ERROR,
ANDROID_LOG_FATAL,
ANDROID_LOG_SILENT, /* only for SetMinPriority(); must be last */
} android_LogPriority;


為了使用方便,在system/core/include/cutils/log.h定義了相對應的宏:
#define LOGV(...) ((void)LOG(LOG_VERBOSE, LOG_TAG, __VA_ARGS__))
#define LOGD(...) ((void)LOG(LOG_DEBUG, LOG_TAG, __VA_ARGS__))
#define LOGI(...) ((void)LOG(LOG_INFO, LOG_TAG, __VA_ARGS__))
#define LOGW(...) ((void)LOG(LOG_WARN, LOG_TAG, __VA_ARGS__))
#define LOGE(...) ((void)LOG(LOG_ERROR, LOG_TAG, __VA_ARGS__))

因為如果需要使用log輸出,包含其頭文件:#include <cutils/log.h> 並link其動態庫:liblog.so 即可
#define LOG_TAG "XX_LOG_TAG" // 這裡可以定義其輸出的TAG
#include <cutils/log.h>

JAVA層打印:
import android.util.Log;


private static final String TAG = "XX_LOG_TAG";
Log.e(TAG, "This is the error log printed by Log.i in android user space.");

Copyright © Linux教程網 All Rights Reserved