JNI的native代码中打印日志到eclipse的logcat中

1 添加ndk对log支持
若需要添加ndk对log的支持,只需要通过以下2步即可实现。

1.1 修改Android.mk
如生成的库文件是“.so文件”,则在Android.mk中添加如下内容:
LOCAL_LDLIBS:=-L$(SYSROOT)/usr/lib -llog
如生成的库文件是“.a文件”,则在Android.mk中添加如下内容:
LOCAL_LDLIBS:=-llog

1.2 在.c或.cpp文件中引用log头文件
添加如下内容:
// 引入log头文件
#include  <android/log.h>
// log标签
#define  TAG    "这里填写日志的TAG"
// 定义info信息
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG,__VA_ARGS__)
// 定义debug信息
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__)
// 定义error信息
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG,__VA_ARGS__)

ANDROID_LOG_INFO:是日志级别;
TAG:是要过滤的标签,可以在LogCat视图中过滤。
__VA_ARGS__:是实际的日志内容。
完成上面2步之后,我们就可以在.c/cpp文件中添加LOGI、LOGD、LOGE去打印信息!使用LOGI、LOGD、LOGE的方法和使用printf一样

1.3日志类型
1)Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v(,);
2)Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择
3)Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息
4)Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。
5)Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了。

如:

LOGI("user info----name:%s, age:%d, sex:%s.", "xxx", 18, "男");

执行上句代码可以再logcat中打印出相应日志。

注意:log打印的方法中不能传入jstring,必须将jstring转为c中的字符数组在传入到方法里面打印,否则会报错。

时间: 2024-10-13 23:41:20

JNI的native代码中打印日志到eclipse的logcat中的相关文章

转 在Linux内核中打印日志时间戳

在编译Linux内核,配置时:make menuconfig ---> Kernel hacking --> printk and dmesg options --> show timing information on printks 当选中这个选项后,启动内核,会在日志信息前面加上时间戳. 从下面的输出可以看出,时间精确到微秒(us). 如下: ----------------------------------------------------------------------

android开发:jni下native代码获取毫秒级时间

#include <android/log.h> #define LOG_TAG "" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) struct timeval xTime; int xRet = gettimeofday(&xTime, NULL); long long xFactor = 1; long long now = (long long)(

程序中打日志

断点调试和打印日志各有优点,下面我们来简要说说如何在程序中打印日志,在BCB6.0中实现. [cpp] view plain copy //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include <wtypes.h> #include <stdio.h> #include <fstrea

02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译

?? 1  编写以下案例(下面的三个按钮都调用了底层的C语言): 项目案例的代码结构如下: 2 编写DataProvider的代码: package com.example.ndkpassdata; public class DataProvider { /** * 计算x和y的加法  apktools * * @param x * @param y * @return */ public native int add(int x,int y); /** * 给字符串后面拼接字符串   加密运算

C#打印日志的小技巧

先祝贺我们的游戏即将上线<龙戒>!http://www.9game.cn/longjie/ 偷得半会闲,分享一个小小的东西.就是打印日志的函数.开发中输出日志必不可少,在C#中输出多个不同类型参数的时候,需要连接符累加输出,很是不方便.一个简单的方法是自己封装一个打印的函数, 让它支持不定参数和不同类型的输出.这样就不会强用字符串进行拼接输出了.也许你没听懂需求,好吧,废话不多说,上代码. public static void Log(params System.Object[] messag

9 个技巧,解决 K8s 中的日志输出问题

作者 | 元乙??阿里云存储服务技术专家 导读:近年来,越来越多的同学咨询如何为 Kubernetes 构建一个日志系统,或者是来求助在此过程中遇到一系列问题如何解决,授人以鱼不如授人以渔,于是作者想把这些年积累的经验以文章的形式发出来,让看到文章的同学少走弯路.K8s 日志系列文章内容偏向落地实操以及经验分享,且内容会随着技术的迭代而不定期更新,本文为该系列文章的第 3 篇. 第一篇:<6 个 K8s 日志系统建设中的典型问题,你遇到过几个?> 第二篇:<一文看懂 K8s 日志系统设计

C#打印日志的小技巧(转)

https://www.cnblogs.com/jqg-aliang/p/5234206.html 打印日志的函数 开发中输出日志必不可少,在C#中输出多个不同类型参数的时候,需要连接符累加输出,很是不方便. 一个简单的方法是自己封装一个打印的函数,让它支持不定参数和不同类型的输出.这样就不会强用字符串进行拼接输出了. public static void Log(params System.Object[] message) { string str = ""; if (messag

Android jni 中打印logcat日志

1.在android.mk文件中 在include $(CLEAR_VARS)下面一行添加: LOCAL_LDLIBS := -llog 2.在c文件中添加头文件 #include<android/log.h> 和自定义方法 #define TAG "test" // 这个是自定义的LOG的标识#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,TAG ,__VA_ARGS__) // 定义LOGD类型#defin

入门: 使用JNI 从C++代码中调用Java的静态方法

开发环境: 操作系统: (uname -a output)  Linux ubuntu 3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:16:28 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux JDK 版本 : (java -version) java version "1.7.0_51"OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubun