C/C++ 实现类似Android JNI log库的效果
2017-12-21 15:24
429 查看
封装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
相关文章推荐
- Android中如何使用ViewPager实现类似laucher左右拖动效果
- Android中如何使用ViewPager实现类似laucher左右拖动效果
- C实现类似C++中的泛型效果
- Android中如何使用ViewPager实现类似laucher左右拖动效果
- 实现类似Android的网格效果的列表视图
- Android动画Animation之Frame实现类似电影的动画效果
- Android 类似IPhone图片点击效果实现,点击logo变暗
- Android实现通用的ActivityGroup(效果类似Android微博客户端主界面),强烈建议不要再使用TabActivity
- Android: 扩展WebView 和ViewPager实现viewpager中的水平滑动,类似Gmail的效果
- Android中如何使用ViewPager实现类似laucher左右拖动效果
- Android中如何使用ViewPager实现类似laucher左右拖动效果 3ff8
- Android进阶:实现android系统自带查看照片动画效果 类似Gallery手势滑动
- Android实现通用的ActivityGroup(效果类似Android微博客户端主界面),...
- android实现图片右上方出现数字,类似邮箱的未读邮件效果
- 如何用Java实现类似c/c++指针效果
- Android实现通用的ActivityGroup(效果类似Android微博客户端主界面),强烈建议不要再使用TabActivity
- Android实现通用的ActivityGroup(效果类似Android微博客户端主界面)
- Android中如何使用ViewPager实现类似laucher左右拖动效果
- android expandablelistview--实现类似qq界面的效果
- Android中如何使用ViewPager实现类似laucher左右拖动效果