XLog 乙個簡易的日誌列印框架

2021-09-11 15:08:11 字數 3386 閱讀 9276

乙個簡易的日誌列印框架(支援列印策略自定義,預設提供2種策略:logcat列印和磁碟列印)

列印debug資訊和json日誌

列印xml資訊

列印出錯資訊

列印debug資訊和json日誌

列印xml資訊

列印出錯資訊

目前支援主流開發工具androidstudio的使用,直接配置build.gradle,增加依賴即可.

1.先在專案根目錄的 build.gradle 的 repositories 新增:

allprojects 

}}複製**

2.然後在dependencies新增:

dependencies 

複製**

xlog.init(this);

複製**

1.構建乙個logger需要乙個日誌格式化策略iformatstrategy和乙個日誌列印策略ilogstrategy

其中,日誌格式化策略iformatstrategy應當持有日誌列印策略ilogstrategy。而logger持有日誌格式化策略。

日誌列印的流程如下:

xlog -> logger -> iformatstrategy -> ilogstrategy

複製**

下面是自定義構建乙個磁碟列印logger的方法:

ilogstrategy disklogstrategy = disklogstrategy.newbuilder()       //日誌列印策略

.setlogdir("xlogdemo") //設定日誌檔案儲存的根目錄

.setlogprefix("xlog") //設定日誌檔名的字首

.setlogsegment(logsegment.four_hours) //設定日誌記錄的時間片間隔

.setloglevels(loglevel.error, loglevel.debug) //設定日誌記錄的等級

.build();

iformatstrategy formatstrategy = diskformatstrategy.newbuilder() //日誌格式策略

.setshowthreadinfo(false) //設定是否顯示執行緒資訊

.settimeformat(timeutils.log_line_time) //設定日誌記錄時間的時間格式

.setmethodcount(1) //設定列印顯示的方法數

.setlogstrategy(disklogstrategy) //設定日誌列印策略

.build();

logger.newbuilder("disklogger")

.setformatstrategy(formatstrategy) //設定日誌格式策略

.build();

複製**

2.簡約的日誌logger構建方法。

為了方便logger的構建,我提供了logger靜態生產工廠logge***ctory。它包含了幾種常用的logger構造方法。

下面是使用logge***ctory構建的乙個磁碟列印logger:

disklogstrategy disklogstrategy = logge***ctory.getdisklogstrategy(

"xlogdemo", "xlog", loglevel.error, loglevel.debug

);logge***ctory.get******disklogger("disklogger", disklogstrategy, 0);

複製**

userinfo userinfo = new userinfo().setloginname("xuexiang").setpassword("12345678");

string json = new gson().tojson(userinfo);

xlog.get().d(json); //列印debug日誌

xlog.get().json(json); //列印json資訊

xlog.get().xml(resourceutils.readstringfromassert(this, "androidmanifest.xml")); //列印xml

try catch (exception e)

複製**

我們在使用第三方庫時,難免需要列印顯示第三方庫的日誌到logcat或者磁碟,那這個時候該怎麼辦呢?

這個時候就可以使用logger的log方法進行介面適配。

//適配第三方日誌列印介面

logger.setlogger(new ilogger

() });

複製**

log方法的介面如下:

/**

* 日誌列印【提供具體日誌列印的功能】

* * @param level 日誌列印等級

* @param tag 日誌標籤

* @param message 日誌的資訊

* @param throwable 錯誤資訊

*/void log(@loglevel string level, string tag, string message, throwable throwable);

複製**

目前提供兩種預設的crash處理:

crashhandler.getinstance().setoncrashlistener(new toastcrashlistener());

crashhandler.getinstance().setoncrashlistener(new sendemailcrashlistener());

複製**

當然,你也可以實現你自己的崩潰crash處理,只需要實現oncrashlistener介面即可。

乙個簡易gopool框架

在 go 中起協程是非常方便的,節省資源的,協程棧大小最大為2kb,所以乍一看在 go 中設計協程池是多此一舉的 但通過 pool 可以提供統一的多工處理模型,統一管理任務處理過程中的監控 告警 且實現資源隔離 不同協程池處理不同型別任務 最重要的一點 通過確定數量的 worker 可以實現對大事務...

乙個簡易的MVP框架

兩個介面 mvpview mvppresenter 乙個類 mvpactivity mvpfragment 1 mvpview public inte ce mvpview2 mvppresenter 泛型 public inte ce mvppresenterextends mvpview 3 m...

製作乙個簡易的PHP框架

crom是結合當前各種框架和各類教程,自己整合的開發框架,框架能進行簡易的web開發。gitlab原始碼鏈結 ctrl model views core common config libimooc.php log storage vendor composer.json index.php 框架根...