安卓开发技巧二:自定义日志工具类XLog的实现

我们在开发过程中,打印日志是必不可少的一个调试环节,然而,直接使用系统自带的Log日志类,并不能满足我们实际项目的需求:假如我们现在在开发一款比较大的项目,用到打印日志的地方肯定特别多,等到真正上线的时候,我们是不希望日志依旧能够打印出的,原因很简单,不仅多少有些影响效率,更有可能导致信息的泄露,所以我们就需要把所有的日志打印语句全部取消掉,难道我们真的一个一个的去删除这些打印日志的语句吗?项目那么大,就是想删除,也得耗费大量的时间和精力!大家不用怕,笔者这就给大家带来一款控制线上版本和线下版本的日志打印工具类XLog,通过该工具,我们可以只需要更改一条语句,就能控制日志是否能够打印输出,那么先贴出整个工具类的代码吧:

其他开发技巧:

安卓开发技巧一:深入理解Android布局中Layout_weight的属性

安卓开发技巧二:自定义日志工具类XLog的实现

安卓开发技巧三:Activity的启动模式

安卓开发技巧四:分享一个工具包,方便快捷切换安卓UI线程及其他后台线程的一个工具包

public final class XLog {

	private static boolean logable;
	private static int logLevel;

	public static enum LogPriority {
		VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT
	}

	/**
	 * 同Log.v
	 *
	 * @param tag
	 * @param msg
	 * @return
	 */
	public static int v(String tag, String msg) {
		return println(LogPriority.VERBOSE, tag, msg);
	}

	/**
	 * 同Log.d
	 *
	 * @param tag
	 * @param msg
	 * @return
	 */
	public static int d(String tag, String msg) {
		return println(LogPriority.DEBUG, tag, msg);
	}

	/**
	 * 同Log.i
	 *
	 * @param tag
	 * @param msg
	 * @return
	 */
	public static int i(String tag, String msg) {
		return println(LogPriority.INFO, tag, msg);
	}

	/**
	 * 同Log.w
	 *
	 * @param tag
	 * @param msg
	 * @return
	 */
	public static int w(String tag, String msg) {
		return println(LogPriority.WARN, tag, msg);
	}

	/**
	 * 同Log.e
	 *
	 * @param tag
	 * @param msg
	 * @return
	 */
	public static int e(String tag, String msg) {
		return println(LogPriority.ERROR, tag, msg);
	}

	/**
	 * 获取是否可打印日志
	 *
	 * @return
	 */
	public static boolean isLogable() {
		return logable;
	}

	/**
	 * 设置是否打印日志
	 *
	 * @param logable
	 */
	public static void setLogable(boolean logable) {
		XLog.logable = logable;
	}

	/**
	 * 设置日志等级
	 *
	 * @param level
	 */
	public static void setLogLevel(LogPriority level) {
		XLog.logLevel = level.ordinal();
	}

	private static int println(LogPriority priority, String tag, String msg) {
		int level = priority.ordinal();
		if (logable && logLevel <= level) {
			return Log.println(level + 2, tag, msg);
		} else {
			return -1;
		}
	}

}

接下来,我们来分析一下该工具类的实现原理:

第一步:首先定义一个是否能够打印日志的变量以及打印日志的优先级

第二步:根据优先级实现五个打印日志的静态方法

第三步:设置获取是否可打印日志的方法

第四步:我们只需要在自定义的Application里面设置是否打印就可以了,紧紧只是传一个布尔值。

是不是很简单呢,对于这个日志工具类还有另外一种实现方法,而且比这个还要简单一些,笔者会在接下来的时间将另外一个日志工具类给补上,谢谢!

时间: 2024-12-26 18:21:50

安卓开发技巧二:自定义日志工具类XLog的实现的相关文章

安卓开发技巧一:深入理解Android布局中Layout_weight的属性

今天开始将要为大家介绍一些安卓开发过程将要用到的一些技巧,这些技巧全部来自网络搜集,或者自己在企业做项目的时候总结出来的,利用这些技巧将会对我们开发带来非常方便的便捷性. 先来记录一下这一段时间的技巧目录,方便大家以后方便查阅(大概有不到三十种的技巧总结,大概每周分享两个技巧,笔者将尽可能写的详细,以及提供实例源码): 安卓开发技巧一:深入理解Android布局中Layout_weight的属性 安卓开发技巧二:自定义日志工具类 安卓开发技巧三:Activity的启动模式 安卓开发技巧四:分享一

Android开发调试日志工具类[支持保存到SD卡]

直接上代码: package com.example.callstatus; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.net.UnknownHostException; import java.text.SimpleDateFormat; impor

安卓开发技巧

Android开发中LogCat工具的使用 LogCat是Android中一个命令行工具,可以用于得到程序的log信息,本附录讲解其使用方法和其中的一些技巧. 1.使用方法 LogCat使用方法如下所示: LogCat [options] [filterspecs] LogCat的选项包括: -s                    设置过滤器,如指定 '*:s'. -f <filename>   输出到文件,默认情况是标准输出. -r [<kbytes>]   Rotate l

Android快速开发系列 10个常用工具类

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自[张鸿洋的博客] 打开大家手上的项目,基本都会有一大批的辅助类,今天特此整理出10个基本每个项目中都会使用的工具类,用于快速开发~~ 在此感谢群里给我发项目中工具类的兄弟/姐妹~ 1.日志工具类L.java [java] view plaincopyprint? package com.zhy.utils; import android.util.Log;

【转】 Android快速开发系列 10个常用工具类 -- 不错

原文网址:http://blog.csdn.net/lmj623565791/article/details/38965311 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自[张鸿洋的博客] 打开大家手上的项目,基本都会有一大批的辅助类,今天特此整理出10个基本每个项目中都会使用的工具类,用于快速开发~~ 在此感谢群里给我发项目中工具类的兄弟/姐妹~ 1.日志工具类L.java [java] view

delphi XE5下安卓开发技巧

delphi XE5下安卓开发技巧 一.手机快捷方式显示中文名称 project->options->Version Info-label(改成需要显示的中文名即可),但是需要安装到安卓手机才可以(IOS的没有试过) 二.使用Sqllite存储中文 SqlLite中,字段类型要设置为nvarchar,保存时,有两种方式1)用Post时,对中文的字段要进行UTF8转换先用一个string变量转换一下(不转换的话Win32编译没有问题,Android编译时出错)str_temp:=UTF8ENCO

SQL开发技巧(二)

本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列文章基于SQLServer系列,且版本为SQLServer2005及以上…… 文章系列目录 SQL开发技巧(一) SQL开发技巧(二) 本文内容简介 这篇文章主要介绍以下内容: 快速查询表的总记录数 非递归查询树形结构表的所有子节点 清除查询缓存 编程中构建Where语句的小技巧 如何进行跨服务器的数据库查询 快速查询表的总记录数 什么,你还在用select count(*) from xxx?难道没有园友告诉你用se

iOS开发项目篇—21抽取工具类

iOS开发项目篇—21抽取工具类 一.抽取宏 把和应用相关的信息抽取出来 App Key:1972915028 App Secret:b255603c4dfd82b4785bf9a808ce2662 回调地址:http://www.cnblogs.com/wendingding/ (1)appkey和回调页面在很多地方都要用到 (2)如果是不同应用的话,只需要把这几个参数换掉就可以了.把它们抽取成一个宏,写到pch文件中. 项目的PCH文件 1 #import <Availability.h>

SQL开发技巧(二) 【转】感觉他写的很好

本文转自: http://www.cnblogs.com/marvin/p/DevelopSQLSkill_2.html 本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列文章基于SQLServer系列,且版本为SQLServer2005及以上…… 文章系列目录 SQL开发技巧(一) SQL开发技巧(二) 本文内容简介 这篇文章主要介绍以下内容: 快速查询表的总记录数 非递归查询树形结构表的所有子节点 清除查询缓存 编程中构建Where语句的小技巧 如何进行跨服务器的