Android小技巧:LogHelper调试程序执行流程的小技巧

转载 2012年03月22日 11:26:59

http://blog.csdn.net/mylzc/article/details/6827230



介绍:在开发的过程中我们经常需要调试程序的执行路径,如我们想知道一个Activity的生命周期方法的调用顺序,我们可能会写如下代码:

.....
public void onResume() {
    super.onResume();
    Log.d("Tag","onResume()");
}

public void onStart() {
    super.onStart();
    Log.d("Tag","onStart()");
}

public void onPause() {
    super.onPause();
    Log.d("Tag","onPause()");
}

public void onStop() {
    super.onStop();
    Log.d("Tag","onStop()");
}

...

这样每次都要输入两个参数,有没有更简便的方法呢?

我们可以通过Thread.currentThread().getStackTrace()获取当前堆栈调用信息,从堆栈信息中可以获取当前调用的java文件名,类名,方法名和代码行号。

于是,我们封装了一个工具类LogHelper。我们只需要使用这个工具类,在跟踪的位置调用LogHelper.trace()方法就可以打印当前调用方法的信息。

例子:打印Activity的生命周期方法执行流程。

LogHelper.java


package com.zhuozhuo;

import android.util.Log;

public final class LogHelper {
	private static boolean mIsDebugMode = true;//获取堆栈信息会影响性能,发布应用时记得关闭DebugMode
	private static String mLogTag = "LogHelper";

	private static final String CLASS_METHOD_LINE_FORMAT = "%s.%s()  Line:%d  (%s)";

	public static void trace() {
		if (mIsDebugMode) {
			StackTraceElement traceElement = Thread.currentThread()
					.getStackTrace()[3];//从堆栈信息中获取当前被调用的方法信息
			String logText = String.format(CLASS_METHOD_LINE_FORMAT,
					traceElement.getClassName(), traceElement.getMethodName(),
					traceElement.getLineNumber(), traceElement.getFileName());
			Log.d(mLogTag, logText);//打印Log
		}
	}
}


LogHelperActivity.java


package com.zhuozhuo;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class LogHelperActivity extends Activity {
    /** Called when the activity is first created. */
	
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        LogHelper.trace();
    }
    
    
    @Override
    public void onStart() {
    	super.onStart();
    	LogHelper.trace();
    }
    
    @Override
    public void onResume() {
    	super.onResume();
    	LogHelper.trace();
    }
    
    @Override
    public void onPause() {
    	super.onPause();
    	LogHelper.trace();
    }
    
    @Override
    public void onStop() {
    	super.onStop();
    	LogHelper.trace();
    }
    
    @Override
    public void onDestroy() {
    	super.onDestroy();
    	LogHelper.trace();
    }
}


log4net在项目中使用

1》从log4net官网下面log4net的文件包,然后在包的bin文件夹下的net文件夹中的4.0文件夹中找到log4net.dll文件,然后将它引入到我们的项目中来 2》在项目中新建一个log4n...
  • Fanbin168
  • Fanbin168
  • 2015年04月30日 12:30
  • 1859

Android小技巧(三):调试程序执行流程的小技巧

介绍:在开发的过程中我们经常需要调试程序的执行路径,如我们想知道一个Activity的生命周期方法的调用顺序,我们可能会写如下代码: [html] view plaincop...
  • diaoguangqiang
  • diaoguangqiang
  • 2014年01月06日 10:42
  • 466

LogHelper 日志记录帮助类

1、LogHelper 日志记录帮助类 2
  • fuyifang
  • fuyifang
  • 2014年10月23日 16:11
  • 5520

LogHelper C#日志记录

  • 2016年12月09日 00:21
  • 24KB
  • 下载

调试程序执行流程的小技巧

介绍:在开发的过程中我们经常需要调试程序的执行路径,如我们想知道一个Activity的生命周期方法的调用顺序,我们可能会写如下代码: [html] view plaincopy ...
  • opzoonzhuzhengke
  • opzoonzhuzhengke
  • 2014年03月07日 19:31
  • 545

C#使用Log4Net记录日志

第一步:下载Log4Net            下载地址:http://logging.apache.org/log4net/download_log4net.cgi          ...
  • u011854789
  • u011854789
  • 2016年08月30日 09:42
  • 3385

LogHelper.cs

namespace Helpers { using System; using System.Collections.Generic; using System.IO; ...
  • FireGhost57
  • FireGhost57
  • 2017年12月27日 16:12
  • 16

C#开发之简单的日志打印类

简单的日志打印的帮助类,以后会继续补充更多的逻辑 public class LogHelper { private static readonly LogHelper In...
  • whuarui2010
  • whuarui2010
  • 2015年01月18日 21:05
  • 4260

一些很不错的Android开发技巧

一些很不错的Android开发技巧,这个项目翻译自 android-tips-tricks 去掉了一些我认为不重要的,对我使用过的东东做了评价,同时翻译了一些自己没有注意到的知识点的文章。 了解...
  • VermouthDream
  • VermouthDream
  • 2017年03月16日 17:33
  • 900

《代码整洁之道》-- 写代码时需要注意的命名技巧

最近在看《代码整洁之道》这本书,感觉这本书不错,其主体思想就是代码质量与其整洁度成正比。而具体如何量化代码的整洁度正是书中所讲。学习之余,整理了一下书中内容和作者思想,在此记下一些笔记并加上一些自己的...
  • gzy252050968
  • gzy252050968
  • 2015年11月29日 20:41
  • 1002
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android小技巧:LogHelper调试程序执行流程的小技巧
举报原因:
原因补充:

(最多只允许输入30个字)