文章目录

前言

最近在看vold层代码,部分是同事以前用c写的代码,日志打印是用fprintf()打印,这种打印日志没有在Android log中展示,因此需要改为使用Android标准的日志输出,然后可以在system 日志中看到。

下面只是简单记录一下。

正文

第一步

引入头文件

#include <android/log.h>

第二步

预定义TAG和函数

#define TAG "BiuMall_"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, TAG, __VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS__)

当然上面的就可以用了

LOGD("Hex dump at offset %ld (%zu bytes):", offset, len);
LOGI("Hex dump at offset %ld (%zu bytes):", offset, len);
LOGE("Hex dump at offset %ld (%zu bytes):", offset, len);

第三部

虽然上面的可以用了,但是之前的打印函数有一定的规则,以及需要控制日志输出等,因此重新转一下。

/* 
输出日志控制 1 打印 0 不打印
*/
static int debug_mode = 1;
static int verbose_mode = 1;

适配之前的打印规则

/* Debug printing macro */
#define DEBUG(...) \
    do { \
        if (debug_mode) { \
            LOGD(__VA_ARGS__); \
        } \
    } while (0)

/* Verbose printing macro */
#define VERBOSE(...) \
    do { \
        if (verbose_mode || debug_mode) { \
            LOGI(__VA_ARGS__); \
        } \
    } while (0)

/* Error printing macro */
#define ERROR(...) \
    do { \
        LOGE(__VA_ARGS__); \
    } while (0)

显示之前写的打印例子。

DEBUG("Device information for %s:", device_path);
VERBOSE("Device information for %s:", device_path);
ERROR("Device information for %s:", device_path);

重新编译即可。

参考文章

  1. 《Android源码

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

none
暂无评论...