ArkUI-X框架支持日志攔截能力,Android側提供原生接口,用于注入LogInterface接口,框架日志及ts日志通過該接口輸出,本文的核心內容是介紹如何在Android平臺上有效利用ArkUI-X框架的LogInterface攔截日志。
Android平臺創建ArkUI-X框架LogInterface
在Android平臺創建ArkUI-X框架LogInterface需要實現ILogger接口,實現聲明接口完整示例如下:
//LogInterface.java
import ohos.ace.adapter.ILogger;
public class LogInterface implements ILogger {@Overridepublic boolean isDebuggable() {return false;}@Overridepublic void d(String tag, String msg) {//對日志信息處理,落盤或輸出}@Overridepublic void i(String tag, String msg) {//對日志信息處理,落盤或輸出}@Overridepublic void w(String tag, String msg) {//對日志信息處理,落盤或輸出}@Overridepublic void e(String tag, String msg) {//對日志信息處理,落盤或輸出}@Overridepublic void f(String tag, String msg) {//對日志信息處理,落盤或輸出}@Overridepublic void jankLog(int tag, String msg) {}
}
設置ArkUI-X框架LogInterface以及日志攔截等級
在需要控制ArkUI-X框架日志及TypeScript日志的輸出時,可以利用StageApplicationDelegate類中setLogInterface方法來注入LogInterface,注入成功,框架和TypeScript的ERROR和FATAL日志通過提供的這個實例的方法輸出,注入失敗,執行日志輸出原邏輯。
? 設置日志攔截等級需使用StageApplicationDelegate類中setLogLevel方法,設置日志攔截等級成功,日志等級優先級低于該日志攔截等級時,日志不被輸出。
? 通過setLogInterface注入LogInterface時,默認僅攔截并處理ERROR和FATAL等級日志;通過setLogLevel可降低日志攔截等級以輸出更詳細日志,但需特別注意:若將日志等級開放至ERROR以下(如 WARN/INFO/DEBUG),存在應用崩潰的風險。
注意:開發者使用時注冊,必須位于調用MyApplication超類的onCreate()方法之后
設置ArkUI-X框架LogInterface以及日志攔截等級,完整示例如下:
// MyApplication.java
import android.util.Log;
import ohos.ace.adapter.ILogger;
import ohos.stage.ability.adapter.StageApplication;
import ohos.stage.ability.adapter.StageApplicationDelegate;public class MyApplication extends StageApplication {private StageApplicationDelegate appDelegate = null;@Overridepublic void onCreate() {super.onCreate();//在此onCreate后注冊LogInterface logInterface = new LogInterface(); //創建實例this.appDelegate = new StageApplicationDelegate(); //創建appDelegatethis.appDelegate.setLogInterface(logInterface); //設置LogInterfacethis.appDelegate.setLogLevel(ILogger.LOG_DEBUG);//設置日志攔截等級}
}