Android 項目Log日誌輸出最佳化

來源:互聯網
上載者:User

標籤:int   效果   項目   進一步   規範   static   cat   開發人員   roi   

概述

Android開發過程中經常需要向控制台輸出日誌資訊,有些人還在用Log.i(tag,msg)的形式或者system.out.println(msg)方式嗎?本篇文章對日誌資訊輸出進行最佳化,以達到快速定位輸出日誌位置及輸出規範日誌的效果。日誌輸出行展示調用輸出日誌資訊在哪個檔案的第幾行,並且可以和點擊跳轉到對應位置的作用。

輸出日誌的一般形式

1、在項目中直接調用Log.i(tag,msg)或者println函數,這是初級開發人員的做法,不便於後期維護與統一控制。
2、在項目中對輸出操作進行封裝,在封裝類中統一調用,這是成熟開發人員的做法,便於統一控制日誌輸出,並在發版時取消日誌輸出操作。
3、對第二種方法進一步最佳化,讓日誌全面展示調用資訊及方便開發過程中通過IDE直接跳轉到調用位置。本文即對第三種最佳化進行記錄。

封裝日誌操作

將常見日誌輸出操作統一放到一個類中,項目需要輸出日誌時通過這個類進行調用,相信大家都有封裝,此步不做詳細說明。

日誌資訊輸出最佳化

我們在封裝Log操作時經常遇到一個難題,那就是TAG如何制定,讓調用者作為參數傳入還是固定使用一個常亮?我的操作時自動調出調用位置資訊,將這些資訊進行處理後作為TAG,查看日誌時看一看到是哪個檔案的第幾行在輸出日誌。

以下為擷取TAG資訊的方法,可以直接複製到代碼中調用,將其作為常值內容通過println函數輸出也可實現此效果。

/**     * 運行棧類名     */    static String stackClassName = "";    /**     * 運行棧     */    static StackTraceElement[] stackTraceElements;    /**     * 擷取預設TAG     */    private static String getDefaultTag(){        try {            //擷取當前運行任務棧資訊            stackTraceElements = Thread.currentThread().getStackTrace();            //遍曆任務棧資訊,擷取調用者資訊並返回            for (StackTraceElement stackTraceElement : stackTraceElements) {                stackClassName = stackTraceElement.getClassName() + "";                //僅擷取本項目下的非此類調用資訊                if (!stackClassName.contains(LogUtil.class.getSimpleName()) && stackClassName.contains("com.")) {                    return "(" + stackTraceElement.getFileName() + ":" + stackTraceElement.getLineNumber() + ")";                }            }        } catch (Exception e) {            e.printStackTrace();        }        return LogUtil.class.getSimpleName();    }

Android 項目Log日誌輸出最佳化

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.