`

Log调试

阅读更多

在开发中我们一定不能避免使用Log类,但是这个类存在一个问题就是,当你在程序中使用了大量的Log,那么在程序开发完毕的时候,这将是一个问题,因为,你需要将所有的Log记录注释掉(当然,你不注释也是可以的)。那么有没有方便的方法来处理呢?

我们可以写一个类,将Log类包装起来,使用一个boolean来控制所有的Log记录的显示。

 

比如这样:

MyLog.java:

public class MyLog {

	public static final boolean isDebug = true;//这里控制所有Log的显示情况

	public static void e(String tag, String message) {
		e(tag, message, null);
	}

	public static void e(String tag, String message, Throwable t) {
		if (isDebug)
			Log.e(tag, message, t);
	}

	public static void v(String tag, String message) {
		v(tag, message, null);
	}

	public static void v(String tag, String message, Throwable t) {
		if (isDebug)
			Log.v(tag, message, t);
	}

	public static void i(String tag, String message) {
		i(tag, message, null);
	}

	public static void i(String tag, String message, Throwable t) {
		if (isDebug)
			Log.i(tag, message, t);
	}

	public static void d(String tag, String message) {
		d(tag, message, null);
	}

	public static void d(String tag, String message, Throwable t) {
		if (isDebug)
			Log.d(tag, message, t);
	}

	public static void w(String tag, String message) {
		w(tag, message, null);
	}

	public static void w(String tag, String message, Throwable t) {
		if (isDebug)
			Log.w(tag, message, t);
	}
}
 

这样,你只要控制 isDebug这个boolean的true和false就可以了。

 

还有一个地方你可以参考下,那就是我们一般在开发的时候,在打印的时候一般我们使用Log打印,第一个参数设置为该类的类名

 

一般可以这样定义:

private String TAG = "MainActivity";

 然后在打印的时候:

Log.d(TAG, "jump to another activity!");
 

我们知道,在实际开发中我们会写一个Activity的基类,一般叫BaseActivity,在这个基类中我们一般对所有Activity具有的公共属性方法进行统一处理,同样,我们可以在这个类中覆盖所有的生命周期方法,这样做有什么好处呢?我们先看代码:

 

BaseActivity.java:

/**
 * 基类
 * 
 * 
 * */
public class BaseActivity extends Activity{

	protected String TAG = BaseActivity.this.getClass().getName();
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);

//		requestWindowFeature(Window.FEATURE_NO_TITLE);//设置无标题
		MyLog.v(TAG, "onCreate");
		
	}
	
	@Override
	public void onStart() {
		super.onStart();

		MyLog.v(TAG, "onStart");

	}

	@Override
	protected void onResume() {

		super.onResume();
		MyLog.v(TAG, "onResume");

	}
	
	@Override
	public void onAttachedToWindow() {
		super.onAttachedToWindow();

		MyLog.v(TAG, "onAttachedToWindow");

	}
	
	@Override
	protected void onPause() {
		super.onPause();

		MyLog.v(TAG, "onPause");

	}
	
	@Override
	public void onStop() {
		super.onStart();

		MyLog.v(TAG, "onStop");

	}
	
	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();

		MyLog.v(TAG, "onDestroy");
	}

	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		MyLog.v(TAG, "requestCode:" + requestCode + ",resultCode:"
				+ resultCode + ",data:" + data);
	}

	@Override
	protected void onRestoreInstanceState(Bundle inState) {
		MyLog.v(TAG, "onRestoreInstanceState");
		super.onRestoreInstanceState(inState);

	}

	@Override
	protected void onSaveInstanceState(Bundle outState) {
		MyLog.v(TAG, "onSaveInstanceState");
		super.onSaveInstanceState(outState);

	}
	
	
}

 

这样做的好处就是:

1.当你写的Activity继承自BaseActivity的时候,你可以很方便的看到这个Activity的生命周期执行过程。

2.当你需要打印日志的时候,不需要再定义TAG了,在BaseActivity中自动就生成了,记住,this关键字表示的是,谁调用,this就代表谁。

protected String TAG = BaseActivity.this.getClass().getName(); 

 

当子类继承自BaseActivity的时候,这个TAG就是这个类的类名,将它设置为protected,那么子类就可以使用这个TAG了。这样做是不是比较方便呢?

 

 

我将上面的代码整理成一个Demo,有兴趣的同学可以去下载:

 

https://github.com/michaelye/LogDemo

 

 

 

 

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    Unity 打包后显示Log 调试信息插件

    Unity 打包后显示Log 调试信息插件

    Unity Log调试工具 SRDebugger - Console Tools On-Device

    "Unity Log调试工具 SRDebugger - Console Tools On-Device"是一款专门针对Unity开发的插件,它允许开发者在真实设备上查看和控制游戏的日志输出,从而极大地提升了移动端项目的调试效率。 SRDebugger这款插件的...

    DebugLog Log调试工具

    在Android开发过程中,日志(Log)调试是一个不可或缺的环节,它可以帮助开发者追踪代码执行流程,定位和解决程序中的问题。"DebugLog"是专为Android开发者设计的一个强大的日志调试工具,它提供了比默认的Android ...

    AGPS基础知识以及log调试方式

    AGPS基础知识以及log调试方式

    高通camera log调试.docx

    本文将介绍如何利用shell命令和log分析来提升调试效率。 首先,我们要了解Camera的启动速度分析,这涉及到HAL层的耗时。HAL(硬件抽象层)是Android系统与硬件之间的一个接口,负责处理相机初始化、预览、拍照等...

    C++ log调试日志输出

    在C++编程中,日志记录是至关重要的,特别是在调试阶段。它允许开发者跟踪程序运行时的状态,识别和解决问题。本文将深入探讨如何在C++中实现有效的日志调试日志输出。 首先,理解日志的基本概念:日志是程序运行...

    Android显示Log信息(带行号)

    在Android开发过程中,调试是必不可少的一个环节,而Log作为调试的主要工具,可以帮助开发者查看程序运行时的状态和数据。本文将详细讲解如何在Android中显示带有行号的Log信息,以及如何利用一个名为`TestMyLogger`...

    一个特别棒的log日志调试工具类

    测试期间log日志打印,支持跳转对应的输出日志地方,代码打包apk,关闭log日志,不担心日志信息泄露,从此妈妈再也不用担心我的学习

    JavaScript调试之console.log调试的一个小技巧分享

    日常开发中经常会需要console来查看当前对象的值。当然用debugger会更全面的查看,但是...下面这篇文章主要给大家分享了关于JavaScript调试之console.log调试的一个小技巧,需要的朋友可以参考借鉴,下面来一起看看吧。

    打印调试日志

    在IT行业中,打印调试日志是一项至关重要的任务,它对于软件开发、问题排查以及系统维护具有举足轻重的作用。日志系统是软件应用程序中一个不可或缺的组件,它记录了程序运行过程中的各种事件和状态,帮助开发者追踪...

    DebugLog扩展调试demo

    `DebugLog`是一个自定义的日志工具类,它扩展了Android原生的`Log`类,提供了更加丰富的日志输出功能,方便我们在调试应用时获取更详细的信息。本篇文章将深入探讨`DebugLog`的实现原理及其在调试过程中的作用。 `...

    Eclipse调试方法及log4j调试方法

    Eclipse调试方法及log4j调试方法Eclipse调试方法及log4j调试方法

    log4js Js调试

    本篇文章将详细介绍`log4js`的基本概念、配置、使用方法以及其在调试中的重要性。 ### 1. log4js简介 `log4js`是一个轻量级的日志模块,它允许开发者定义不同的日志级别(如`DEBUG`、`INFO`、`WARN`、`ERROR`和`...

    log4net调试配置

    在C#开发中,日志记录工具log4net是一个非常重要的辅助工具,它能帮助开发者追踪应用程序中的错误、警告和信息,从而进行有效的调试。本文将深入探讨log4net的调试配置及其在C#项目中的应用。 首先,log4net是...

    androideclipse开发如何debug调试.pdf

    6. **使用Log调试**: 当Android模拟器运行速度较慢,特别是在Debug时,使用Logcat输出日志信息是一种有效的替代方式。在代码中使用`Log`类的方法,如`Log.d()`、`Log.i()`、`Log.w()`、`Log.e()`等,分别对应调试...

    串口调试工具可显示log时间戳

    "串口调试工具可显示log时间戳"这一特性使得它在调试过程中更加实用,因为时间戳能够精确地反映出数据发送或接收的时间点,这对于追踪数据流、识别问题发生的时间以及分析数据间的同步性至关重要。 首先,让我们...

    使用Jlink调试输出log信息的相关文件

    传统的调试方式如UART(通用异步收发传输器)通过串口输出log信息,但这种方式需要额外的硬件支持,并且在没有物理串口或者串口资源紧张的情况下会受到限制。为了解决这个问题,J-Link提供了一种名为Real-Time ...

    javascript代码调试之console.log 用法图文详解

    在JavaScript的编程和调试中,console.log是一种非常实用的调试工具。对于初学者来说,理解并熟练使用console.log对于编写正确且高效的JavaScript代码至关重要。本文将详细介绍console.log的用法以及一些其他的...

    F4-Log.zip调试打印

    F4-Log.zip调试打印

Global site tag (gtag.js) - Google Analytics