gpt4 book ai didi

android - 我如何在 Android C++ 文件中打印 ALOGI(...)?

转载 作者:行者123 更新时间:2023-11-28 05:34:41 28 4
gpt4 key购买 nike

比如dalvik/vm/native/dalvik_system_DexFile.cpp中有一个ALOGI("there is a log")函数,我想在logcat或DDMS中看到这个log。

我该怎么做?请具体一点。谢谢。

最佳答案

打印日志的最佳方式是为此任务创建跨平台标题。例如,使用以下 logger.h:

#pragma once

#define TMB_DEBUG_LOGS 1

#ifdef TMB_DEBUG_LOGS
// YES LOGS
# ifdef ANDROID
// LOGS ANDROID
# include <android/log.h>
# define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG,__VA_ARGS__)
# define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG , LOG_TAG,__VA_ARGS__)
# define LOGI(...) __android_log_print(ANDROID_LOG_INFO , LOG_TAG,__VA_ARGS__)
# define LOGW(...) __android_log_print(ANDROID_LOG_WARN , LOG_TAG,__VA_ARGS__)
# define LOGE(...) __android_log_print(ANDROID_LOG_ERROR , LOG_TAG,__VA_ARGS__)
# else
// LOGS NO ANDROID (fprintf)
#include <stdio.h>
#include <time.h>

//Warning, multithreading problem in logs with this solution!
static char buff[100];
static struct tm *sTm;
static time_t now;
# define PRINT_TIME {now = time(0); sTm = localtime(&now); strftime(buff, sizeof(buff), "[%Y-%m-%d %H:%M:%M]", sTm); fprintf(stderr, "%s ", buff); }
# define LOGV(...) {PRINT_TIME fprintf(stderr, "[V][%s] ", LOG_TAG); fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n");}
# define LOGD(...) {PRINT_TIME fprintf(stderr, "[D][%s] ", LOG_TAG); fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n");}
# define LOGI(...) {PRINT_TIME fprintf(stderr, "[I][%s] ", LOG_TAG); fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n");}
# define LOGW(...) {PRINT_TIME fprintf(stderr, "[W][%s] ", LOG_TAG); fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n");}
# define LOGE(...) {PRINT_TIME fprintf(stderr, "[E][%s] ", LOG_TAG); fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n");}
# endif // ANDROID
#else
// NO LOGS
# define LOGV(...)
# define LOGD(...)
# define LOGI(...)
# define LOGW(...)
# define LOGE(...)
#endif // TMB_DEBUG_LOGS

在您的源代码中,例如 main.c

//... your includes
#define LOG_TAG "MainProgram"
#include "logger.h"

main()
{
// My code
LOGI("The program is creating a info log");
LOGD("My foo: %d", foo_variable);
}

关于android - 我如何在 Android C++ 文件中打印 ALOGI(...)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38584876/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com