如何在Android C++文件中打印ALOGI(..)
How I print the ALOGI(...) in Android C++ file?
例如,在dalvik/vm/nature/dalvik_system_DexFile.cpp中有一个ALOGI("有日志")函数,我想在logcat或DDMS中查看此日志。
我该怎么做?请具体说明。谢谢
打印日志的最佳方法是为此任务创建一个头跨平台。例如,使用以下记录器.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);
}
相关文章:
- 如何循环打印顶点结构
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 如何在c++中打印目录
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 在线编译器中的分段C++没有打印消息
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 如何将结构插入到集合中并打印集合的成员
- 在循环C++中指定字符串之后,不会打印该字符串
- 以螺旋方式打印矩阵的程序.(工作不好)
- 从控制台中删除最后打印的元素
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 如何仅使用对象名称打印特定于对象的成员
- 回溯C++不打印函数,因此文件
- 在一定长度后从数组中打印时缺少整数
- 为什么这个 c++ 代码打印出长度 5,当我打印出字符串时,程序会自动终止?
- 在gem5中打印文件中的所有cache_blocks
- 打印数字图案
- Log4cpp:以UTC/GMT时区打印日期
- 如何在Android C++文件中打印ALOGI(..)