C/C++ 实现类似Android JNI log库的效果
来源:互联网 发布:淘宝联盟机器人免费版 编辑:程序博客网 时间:2024/06/06 00:55
封装log
C标准库提供了printf
作为日志输出函数
C++中stl提供了std::cout
作为日志输出函数
当然这两种接口使用起来都不太方便
printf函数太长 而且日志没有分级别
cout使用起来则更为繁琐
std::cout << "test" << std::endl;
封装printf
常见的封装方法是这样的:
#define log(fmt,...)\ do {\ printf(fmt, ##__VA_ARGS__);\ } while(0)
这样封装后 printf可变参数的优点被保留下来 同时也不需要那么长的函数名
Android SDK中的做法
在Android中使用JNI接口时
可以这么使用日志 Log.i(“tag”, “test”);
类似的接口还有Log.d(),Log.e()
后缀的i e d代表的是日志的级别
i是info e是error d是debug
同样的 通过几个宏定义可以实现这种效果
#define Log.i(fmt,...)\ do {\ printf("info: ");\ printf(fmt, ##__VA_ARGS__);\ printf("\n");\ } while(0)#define Log.d(fmt,...)\ do {\ printf("debug: ");\ printf(fmt, ##__VA_ARGS__);\ printf("\n");\ } while(0) #define Log.e(fmt,...)\ do {\ printf("error: ");\ printf(fmt, ##__VA_ARGS__);\ printf("\n");\ } while(0)
这里只是简单的举例
工程应用中还可以加上其他效果
比如 利用 LINE_ 和FILE这些宏 定位log文件位置等等
还可以根据log级别 加上输出log的颜色来区分不同级别的log
阅读全文
0 0
- C/C++ 实现类似Android JNI log库的效果
- 解读Android LOG机制的实现:(3)JNI及c/c++域写设备文件
- 如何在Android jni 的c/c++中打Log
- C#Winform实现类似Android的Listener
- JNI调试C/C++的log打印
- android--jni编译错误的解决方案:.c源文件出现类似Type 'jstring' could not be resolved
- 使用jni实现在C语言中打印log信息
- Android jni 开发中C/C++层打印Log信息
- Android中调用c函数来打印log---(JNI)
- Android jni 使用C语言调用java中的log方法
- Android JNI 在C中调用Java(包括自定义的Java方法和Log)
- 如何用Java实现类似c/c++指针效果
- C实现类似C++中的泛型效果
- Android JNI实现Java与C的数据传递
- Android移植---JNI中HelloWorld的C和C++实现
- 一个简单的Android程序,JNI实现Native C/C++
- android调用本地C/C++代码,jni的实现
- 在Java中实现类似C/C++中#ifdef...#endif预编译宏的效果
- 0 NULL nullptr浅析
- 图标设计Tips
- 使用wpa_cli命令行配置Wi-Fi无线网卡
- kafka安装以及配置
- ELK-B 5.x升级6.x
- C/C++ 实现类似Android JNI log库的效果
- iOS11 tableView内容向下偏移20pt或向下偏移64pt的问题?
- HDOJ 1026 BFS
- Python开发环境安装
- 第一阶段-入门详细图文讲解tensorflow1.4 -(十一)TensorBoard Histogram Dashboard
- 在Action中以Struts2的方式输出JSON数据
- Mybatis中模糊查询时相关的参数传递及xml配置
- 最近出现Matlab2010b点击matlab.exe运行时,不断提示Activate MathWorks Software,无法正常使用
- 从0开始学习SpringCould(8)--SpringBoot 分环境读取配置文件