在开发中我们一定不能避免使用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
分享到:
相关推荐
Unity 打包后显示Log 调试信息插件
"Unity Log调试工具 SRDebugger - Console Tools On-Device"是一款专门针对Unity开发的插件,它允许开发者在真实设备上查看和控制游戏的日志输出,从而极大地提升了移动端项目的调试效率。 SRDebugger这款插件的...
在Android开发过程中,日志(Log)调试是一个不可或缺的环节,它可以帮助开发者追踪代码执行流程,定位和解决程序中的问题。"DebugLog"是专为Android开发者设计的一个强大的日志调试工具,它提供了比默认的Android ...
本文将介绍如何利用shell命令和log分析来提升调试效率。 首先,我们要了解Camera的启动速度分析,这涉及到HAL层的耗时。HAL(硬件抽象层)是Android系统与硬件之间的一个接口,负责处理相机初始化、预览、拍照等...
在C++编程中,日志记录是至关重要的,特别是在调试阶段。它允许开发者跟踪程序运行时的状态,识别和解决问题。本文将深入探讨如何在C++中实现有效的日志调试日志输出。 首先,理解日志的基本概念:日志是程序运行...
在Android开发过程中,调试是必不可少的一个环节,而Log作为调试的主要工具,可以帮助开发者查看程序运行时的状态和数据。本文将详细讲解如何在Android中显示带有行号的Log信息,以及如何利用一个名为`TestMyLogger`...
测试期间log日志打印,支持跳转对应的输出日志地方,代码打包apk,关闭log日志,不担心日志信息泄露,从此妈妈再也不用担心我的学习
日常开发中经常会需要console来查看当前对象的值。当然用debugger会更全面的查看,但是...下面这篇文章主要给大家分享了关于JavaScript调试之console.log调试的一个小技巧,需要的朋友可以参考借鉴,下面来一起看看吧。
在IT行业中,打印调试日志是一项至关重要的任务,它对于软件开发、问题排查以及系统维护具有举足轻重的作用。日志系统是软件应用程序中一个不可或缺的组件,它记录了程序运行过程中的各种事件和状态,帮助开发者追踪...
`DebugLog`是一个自定义的日志工具类,它扩展了Android原生的`Log`类,提供了更加丰富的日志输出功能,方便我们在调试应用时获取更详细的信息。本篇文章将深入探讨`DebugLog`的实现原理及其在调试过程中的作用。 `...
Eclipse调试方法及log4j调试方法Eclipse调试方法及log4j调试方法
本篇文章将详细介绍`log4js`的基本概念、配置、使用方法以及其在调试中的重要性。 ### 1. log4js简介 `log4js`是一个轻量级的日志模块,它允许开发者定义不同的日志级别(如`DEBUG`、`INFO`、`WARN`、`ERROR`和`...
在C#开发中,日志记录工具log4net是一个非常重要的辅助工具,它能帮助开发者追踪应用程序中的错误、警告和信息,从而进行有效的调试。本文将深入探讨log4net的调试配置及其在C#项目中的应用。 首先,log4net是...
6. **使用Log调试**: 当Android模拟器运行速度较慢,特别是在Debug时,使用Logcat输出日志信息是一种有效的替代方式。在代码中使用`Log`类的方法,如`Log.d()`、`Log.i()`、`Log.w()`、`Log.e()`等,分别对应调试...
"串口调试工具可显示log时间戳"这一特性使得它在调试过程中更加实用,因为时间戳能够精确地反映出数据发送或接收的时间点,这对于追踪数据流、识别问题发生的时间以及分析数据间的同步性至关重要。 首先,让我们...
传统的调试方式如UART(通用异步收发传输器)通过串口输出log信息,但这种方式需要额外的硬件支持,并且在没有物理串口或者串口资源紧张的情况下会受到限制。为了解决这个问题,J-Link提供了一种名为Real-Time ...
在JavaScript的编程和调试中,console.log是一种非常实用的调试工具。对于初学者来说,理解并熟练使用console.log对于编写正确且高效的JavaScript代码至关重要。本文将详细介绍console.log的用法以及一些其他的...
F4-Log.zip调试打印
Android.mk文件添加调试打印信息 前言 你是否有过这么一个需求,就是Android的编译环境是由无数个Android.mk文件和其它类型mk文件组成...#输出字符串的方式有如下三种,程度越来越高,有点像Android里面的Log等级