資源簡介
此工具可以看到打的log在那個java中的那一行,方便我們查看流程
代碼片段和文件信息
package?com.atguigu.mobileplayer2.utils;
import?android.os.Environment;
import?android.text.TextUtils;
import?android.util.Log;
import?java.io.BufferedWriter;
import?java.io.File;
import?java.io.FileOutputStream;
import?java.io.IOException;
import?java.io.OutputStreamWriter;
import?java.text.DateFormat;
import?java.text.SimpleDateFormat;
import?java.util.Date;
import?java.util.Formatter;
import?java.util.Locale;
/**
?*?Created?by?GaryChan?on?16/5/3.
?*/
public?class?LogUtil?{
????public?static?String?customTagPrefix?=?““;??//?自定義Tag的前綴,可以是作者名
????public?static?boolean?isSaveLog?=?false;????//?是否把保存日志到SD卡中
????public?static?final?String?LOG_PATH?=?Environment.getExternalStorageDirectory().getPath();?//?SD卡中的根目錄
????private?static?DateFormat?formatter?=?new?SimpleDateFormat(“yyyy-MM-dd“?Locale.SIMPLIFIED_CHINESE);
????private?LogUtil()?{
????}
????//?容許打印日志的類型,默認(rèn)是true,設(shè)置為false則不打印
????public?static?boolean?allowD?=?true;
????public?static?boolean?allowE?=?true;
????public?static?boolean?allowI?=?true;
????public?static?boolean?allowV?=?true;
????public?static?boolean?allowW?=?true;
????public?static?boolean?allowWtf?=?true;
????private?static?String?generateTag(StackTraceElement?caller)?{
????????String?tag?=?“%s.%s(Line:%d)“;?//?占位符
????????String?callerClazzName?=?caller.getClassName();?//?獲取到類名
????????callerClazzName?=?callerClazzName.substring(callerClazzName.lastIndexOf(“.“)?+?1);
????????tag?=?String.format(tag?callerClazzName?caller.getMethodName()?caller.getLineNumber());?//?替換
????????tag?=?TextUtils.isEmpty(customTagPrefix)???tag?:?customTagPrefix?+?“:“?+?tag;
????????return?tag;
????}
????/**
?????*?自定義的logger
?????*/
????public?static?CustomLogger?customLogger;
????public?interface?CustomLogger?{
????????void?d(String?tag?String?content);
????????void?d(String?tag?String?content?Throwable?e);
????????void?e(String?tag?String?content);
????????void?e(String?tag?String?content?Throwable?e);
????????void?i(String?tag?String?content);
????????void?i(String?tag?String?content?Throwable?e);
????????void?v(String?tag?String?content);
????????void?v(String?tag?String?content?Throwable?e);
????????void?w(String?tag?String?content);
????????void?w(String?tag?String?content?Throwable?e);
????????void?w(String?tag?Throwable?tr);
????????void?wtf(String?tag?String?content);
????????void?wtf(String?tag?String?content?Throwable?e);
????????void?wtf(String?tag?Throwable?tr);
????}
????public?static?void?d(String?content)?{
????????if?(!allowD)?{
????????????return;
????????}
????????StackTraceElement?caller?=?getCallerStackTraceElement();
????????String?tag?=?generateTag(caller);
????????if?(customLogger?!=?null)?{
????????????customLogger.d(tag?content);
????????}?else?{
????????????Log.d(tag?content);
????????}
????}
????public?static?void?d(String?content?Throwable?e)?{
????????if?(!allowD)?{
????????????return;
????????}
????????StackTraceElement?caller?=?getCallerStackTraceElement();
????????
評論
共有 條評論