一、JAVA版
android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 。根据首字母对应VERBOSE,DEBUG,INFO, WARN,ERROR。
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错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了。
注意:不同的打印方法在使用时都是某个方法带上(String tag, String msg)参数,tag表示的是打印信息的标签,msg表示的是需要打印的信息。
日志工具类
/**
* LogUtil .java
* 打印日志工具类
* 使用方法:level = VERBOSE可以打印所有的日志;level = NOTHING所有的日志都打印不出来,上线时设置level = NOTHING
*/
public class LogUtil {
public static final int VERBOSE = 1;
public static final int DEBUG = 2;
public static final int INFO = 3;
public static final int WARN = 4;
public static final int ERROR = 5;
public static final int NOTHING = 6;
public static final int level = VERBOSE;
private LogUtil() {
throw new UnsupportedOperationException("本日志工具类不能被实例化,直接调用静态方法就好");
}
/**
* 打印Verbose级别日志
* @param tag
* @param msg
*/
public static void v(String tag,String msg){
if(level <= VERBOSE){
Log.v(tag, msg);
}
}
/**
* 打印Debug级别日志
* @param tag
* @param msg
*/
public static void d(String tag,String msg){
if(level <= DEBUG){
Log.d(tag, msg);
}
}
/**
* 打印Info级别日志
* @param tag
* @param msg
*/
public static void i(String tag,String msg){
if(level <= INFO){
Log.i(tag, msg);
}
}
/**
* 打印Warn级别日志
* @param tag
* @param msg
*/
public static void w(String tag,String msg){
if(level <= WARN){
Log.w(tag, msg);
}
}
/**
* 打印Error级别的日志
* @param tag
* @param msg
*/
public static void e(String tag,String msg){
if(level <= ERROR){
Log.e(tag, msg);
}
}
}
//工具类打印方法
LogUtil.v(TAG,"verbose");
LogUtil.d(TAG,"debug");
LogUtil.i(TAG,"info");
LogUtil.w(TAG,"warn");
LogUtil.e(TAG,"error");
二、C++版
1.添加头文件#include<android/log.h>
2.添加log库liblog.so
3.定义宏
#define TAG "myDemo-jni" // 这个是自定义的LOG的标识
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,TAG ,__VA_ARGS__) // 定义LOGD类型
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG ,__VA_ARGS__) // 定义LOGI类型
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,TAG ,__VA_ARGS__) // 定义LOGW类型
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG ,__VA_ARGS__) // 定义LOGE类型
#define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,TAG ,__VA_ARGS__) // 定义LOGF类型
上述代码中定义的函数分别对应于Android 的Java代码中的Log.d(), Log.i(), Log.w(),Log.e(), Log.f()等方法。
参考文章: