日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 自定义库,Android自定义Log库

發布時間:2025/3/12 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 自定义库,Android自定义Log库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

我們在開發的時候肯定會打一些Log,特別是在調試代碼或者bug的時候,我們都會打一些Log日志來記錄,但是當我們發布正式版本的時候,尼瑪,要一行一行的去掉,這就尷尬了。

懵逼狀態

勵志封裝Log庫

本來想使用github上的Logger庫的,但是感覺有點煩中,后面看到了鴻洋大師寫過一篇關于Log庫的文章 Android反觀Log庫后面我也是根據這個來簡單的修改的

自定義內容

增加變量來區分debug模式還是release模式,在release的情況下將所有的Log日志都去掉。

利用StackTraceElement來輸出我們的Log的位置,便于我們定位和尋找日志。

實現

我們以i的log來作為例子:

/**

* iiiiiiiiiiiiii

* @param content

*/

public static void i(String content){

i(null,content);

}

public static void i(String tag,String content){

if (!sDebug) return;

printer.i(getFinalTag(tag),content);

}

其中的isDebug是我們的標識位,我們可以把它在初始化的時候來與編譯類型綁定起來。

其中Printer類是實現了打印Log日志功能的輸出類:

public class LogPrint implements Printer{

@Override

public void d(String message, String str) {

new DebugLogText(message).setup(str);

}

@Override

public void e(String message, String str) {

new ErrorLogText(message).setup(str);

}

@Override

public void e(String message, String str,Throwable throwable) {

new ErrorLogText(message).setup(str+throwable.getMessage());

}

@Override

public void w(String message, String str) {

new WarnLogText(message).setup(str);

}

@Override

public void i(String message, String str) {

new InfoLogText(message).setup(str);

}

@Override

public void v(String message, String str) {

new VerboseLogText(message).setup(str);

}

@Override

public void wtf(String message, Object... args) {

}

@Override

public void json(String message, String json) {

new InfoLogText(message).setup(json);

}

@Override

public void xml(String xml) {

}

@Override

public void clear() {

}

}

具體的輸出類型是由對應的Log類型來產生,我們來看一個類InfoLogText:

public class InfoLogText extends LogText {

public InfoLogText(String tag) {

super(tag);

}

@Override

protected void setUpHeader() {

Log.i(mTag, SINGLE_DIVIDER);

}

@Override

protected void setUpFooter() {

Log.i(mTag, DOUBLE_DIVIDER);

}

@Override

protected void setUpContent(String content) {

StackTraceElement targetStackTraceElement = getTargetStackTraceElement();

Log.i(mTag, "(" + targetStackTraceElement.getFileName() + ":"

+ targetStackTraceElement.getLineNumber() + ")");

Log.i(mTag, content);

}

}

總結

我們可以看到,它實際調用的是系統的Log的日志方法,當然拼接了,對應的Log日志的類和行數,具體的原理我們可以查看上面提到的鴻洋的文章。

好了,我么大家來看一下最后的日志效果

11-30 23:41:52.149 3580-3580/com.aotuman.weather I/aotuman: ********************************************

11-30 23:41:52.149 3580-3580/com.aotuman.weather I/aotuman: (MainActivity.java:30)

11-30 23:41:52.149 3580-3580/com.aotuman.weather I/aotuman: is a test

11-30 23:41:52.149 3580-3580/com.aotuman.weather I/aotuman: ════════════════════════════════════════════

總結

以上是生活随笔為你收集整理的android 自定义库,Android自定义Log库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。