Android 項目Log日志輸出優化


概述

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();
	}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM