超实用的android自定义log日志输出工具类
android自定义log日志输出工具,该工具类具有以下优点:
1在LogUtlis方法的第一个参数中填this可以输出当前类的名称,特别是在匿名内部类使用也可以输出当前类名。
如:LogUtils.i(this,”这是一个实用的日志工具类”)或LogUtils.i(类名.class,”这是一个实用的日志工具类”)。
效果:比如我在MainActivity中直接LogUtils.i(this,”logTest”),配合自己喜欢的标志,结果可输出为
“zhang———-MainActivity:logTest“,方便调试和看log。
2可以配合androidStudio中build文件中自定义变量来控制不同版本log的是否输出。
使用步骤:
1在app目录下的build.gradle中定义变量名称,写完make或build下工程。
/**
*release下的buildConfigField为false会屏蔽掉log输出
*/
buildTypes{
release{
minifyEnabledfalse
proguardFilesgetDefaultProguardFile('proguard-android.txt'),'proguard-rules.txt'
buildConfigField"boolean","LOG_DEBUG","true"
}
debug{
minifyEnabledfalse
buildConfigField"boolean","LOG_DEBUG","true"
proguardFilesgetDefaultProguardFile('proguard-android.txt'),'proguard-rules.txt'
}
}
2在应用的application中的onCreate方法中这样定义
/**
*BuildConfig.LOG_DEBUG获取build.gradle中的自定义的log控制变量
*/
if(BuildConfig.LOG_DEBUG){
LogUtils.isShowLog=true;
}else{
LogUtils.isShowLog=false;
}
LogUtils
/**
*@创建者zsh
*@创建时间2017/1/1710:23
*@描述${log控制的工具类}
*
*@更新者$Author
*@更新时间$Date
*@更新描述${TODO}
*/
publicclassLogUtils{
/**Log输出的控制开关*/
publicstaticbooleanisShowLog=true;
/**开发者自己定义,我是用自己的姓来log的*/
publicstaticfinalStringselfFlag="zhang---------";
publicstaticvoidi(ObjectobjTag,Stringmsg){
if(!isShowLog){
return;
}
Stringtag;
//如果objTag是String,则直接使用
//如果objTag不是String,则使用它的类名
//如果在匿名内部类,写this的话是识别不了该类,所以获取当前对象全类名来分隔
if(objTaginstanceofString){
tag=(String)objTag;
}elseif(objTaginstanceofClass){
tag=((Class)objTag).getSimpleName();
}else{
tag=objTag.getClass().getName();
String[]split=tag.split("\\.");
tag=split[split.length-1].split("\\$")[0];
}
if(TextUtils.isEmpty(msg)){
Log.i(selfFlag.concat(tag),"该log输出信息为空");
}else{
Log.i(selfFlag.concat(tag),msg);
}
}
/**
*错误调试信息
*@paramobjTag
*@parammsg
*/
publicstaticvoide(ObjectobjTag,Stringmsg){
if(!isShowLog){
return;
}
Stringtag;
if(objTaginstanceofString){
tag=(String)objTag;
}elseif(objTaginstanceofClass){
tag=((Class)objTag).getSimpleName();
}else{
tag=objTag.getClass().getName();
String[]split=tag.split("\\.");
tag=split[split.length-1].split("\\$")[0];
}
if(TextUtils.isEmpty(msg)){
Log.e(selfFlag.concat(tag),"该log输出信息为空");
}else{
Log.e(selfFlag.concat(tag),msg);
}
}
/**
*详细输出调试
*@paramobjTag
*@parammsg
*/
publicstaticvoidv(ObjectobjTag,Stringmsg){
if(!isShowLog){
return;
}
Stringtag;
if(objTaginstanceofString){
tag=(String)objTag;
}elseif(objTaginstanceofClass){
tag=((Class)objTag).getSimpleName();
}else{
tag=objTag.getClass().getName();
String[]split=tag.split("\\.");
tag=split[split.length-1].split("\\$")[0];
}
if(TextUtils.isEmpty(msg)){
Log.v(selfFlag.concat(tag),"该log输出信息为空");
}else{
Log.v(selfFlag.concat(tag),msg);
}
}
/**
*警告的调试信息
*@paramobjTag
*@parammsg
*/
publicstaticvoidw(ObjectobjTag,Stringmsg){
if(!isShowLog){
return;
}
Stringtag;
if(objTaginstanceofString){
tag=(String)objTag;
}elseif(objTaginstanceofClass){
tag=((Class)objTag).getSimpleName();
}else{
tag=objTag.getClass().getName();
String[]split=tag.split("\\.");
tag=split[split.length-1].split("\\$")[0];
}
if(TextUtils.isEmpty(msg)){
Log.w(selfFlag.concat(tag),"该log输出信息为空");
}else{
Log.w(selfFlag.concat(tag),msg);
}
}
/**
*debug输出调试
*@paramobjTag
*@parammsg
*/
publicstaticvoidd(ObjectobjTag,Stringmsg){
if(!isShowLog){
return;
}
Stringtag;
if(objTaginstanceofString){
tag=(String)objTag;
}elseif(objTaginstanceofClass){
tag=((Class)objTag).getSimpleName();
}else{
tag=objTag.getClass().getName();
String[]split=tag.split("\\.");
tag=split[split.length-1].split("\\$")[0];
}
if(TextUtils.isEmpty(msg)){
Log.d(selfFlag.concat(tag),"该log输出信息为空");
}else{
Log.d(selfFlag.concat(tag),msg);
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。