Android 开源日志库Logger的简单使用

在项目测试运行的过程中需要有测试日志,一般情况下都是自己根据需求定义自己Logger工具类,诸如:


import android.util.Log;

public class Logger {
	private static final int VERBOSE = 5;
	private static final int DEBUG = 4;
	private static final int INFO = 3;
	private static final int WARN = 2;
	private static final int ERROR = -1;

	private static int LOG_LEVEL = 6;

	public static void v(String tag, String msg) {
		if (LOG_LEVEL > VERBOSE) {
			Log.v(tag, msg);
		}
	}

	public static void d(String tag, String msg) {
		if (LOG_LEVEL > DEBUG) {
			Log.d(tag, msg);
		}
	}

	public static void i(String tag, String msg) {
		if (LOG_LEVEL > INFO) {
			Log.i(tag, msg);
		}
	}

	public static void w(String tag, String msg) {
		if (LOG_LEVEL > WARN) {
			Log.w(tag, msg);
		}
	}

	public static void e(String tag, String msg) {
		if (LOG_LEVEL > ERROR) {
			Log.e(tag, msg);
		}
	}

}

等等。一次偶然的机会在github上发现大神 Orhan Obut 分享了一开源项目Logger,用来输出日志,发现非常好用,该开源库能够把:

  • 线程的信息
  • 类的信息
  • 方法的信息
  • 格式打印json、xml等
  • 点击链接跳转到源码打印处
等的信息打印出来,以便使Log日志更加的清晰明了。并且该类实现起来非常简单:

首先:关联编译开源库,目前最新版本的是

compile 'com.orhanobut:logger:2.1.1'
再者进行初始化操作:

Logger.addLogAdapter(new AndroidLogAdapter());

当然你要想个人化定制,Logger还提供了一个根据自己需求输出日志的先进方法:

FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
  .showThreadInfo(false)  //(可选)是否显示线程信息。 默认值为true
  .methodCount(2)         // (可选)要显示的方法行数。 默认2
  .methodOffset(7)        // (可选)隐藏内部方法调用到偏移量。 默认5
  .logStrategy(customLog) //(可选)更改要打印的日志策略。 默认LogCat
  .tag("zqh")   //(可选)每个日志的全局标记。 默认PRETTY_LOGGER
  .build();
然后再

Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));
就OK了。

一般我会把初始化操作放在Application里面,当然你在Application中配置之后,千万不要忘记在AndroidManifest.xml中声明一下。

接下来我们就可以直接使用了:

1.普通日志:

 
Logger.d("我是debug级别的log日志");
Logger.i("我是infor级别的log日志");
Logger.v("我是v级别的log日志");
Logger.w("我是warn级别的log日志");
Logger.e("我是error级别的log日志");
 
输出日志: 

09-16 15:41:12.294: D/zqh(29721): ┌───────────────────────────────────────────────────────────
09-16 15:41:12.294: D/zqh(29721): │ Method.invokeNative  (Method.java:-2)
09-16 15:41:12.294: D/zqh(29721): │    ActivityThread.main  (ActivityThread.java:5120)
09-16 15:41:12.294: D/zqh(29721): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
09-16 15:41:12.294: D/zqh(29721): │ 我是debug级别的log日志
09-16 15:41:12.294: D/zqh(29721): └───────────────────────────────────────────────────────────
09-16 15:41:12.294: I/zqh(29721): ┌───────────────────────────────────────────────────────────
09-16 15:41:12.294: I/zqh(29721): │ Method.invokeNative  (Method.java:-2)
09-16 15:41:12.294: I/zqh(29721): │    ActivityThread.main  (ActivityThread.java:5120)
09-16 15:41:12.294: I/zqh(29721): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
09-16 15:41:12.294: I/zqh(29721): │ 我是infor级别的log日志
09-16 15:41:12.294: I/zqh(29721): └───────────────────────────────────────────────────────────
09-16 15:41:12.294: V/zqh(29721): ┌───────────────────────────────────────────────────────────
09-16 15:41:12.294: V/zqh(29721): │ Method.invokeNative  (Method.java:-2)
09-16 15:41:12.294: V/zqh(29721): │    ActivityThread.main  (ActivityThread.java:5120)
09-16 15:41:12.294: V/zqh(29721): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
09-16 15:41:12.294: V/zqh(29721): │ 我是v级别的log日志
09-16 15:41:12.294: V/zqh(29721): └───────────────────────────────────────────────────────────
09-16 15:41:12.294: W/zqh(29721): ┌───────────────────────────────────────────────────────────
09-16 15:41:12.304: W/zqh(29721): │ Method.invokeNative  (Method.java:-2)
09-16 15:41:12.304: W/zqh(29721): │    ActivityThread.main  (ActivityThread.java:5120)
09-16 15:41:12.304: W/zqh(29721): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
09-16 15:41:12.304: W/zqh(29721): │ 我是warn级别的log日志
09-16 15:41:12.304: W/zqh(29721): └───────────────────────────────────────────────────────────
09-16 15:41:12.304: E/zqh(29721): ┌───────────────────────────────────────────────────────────
09-16 15:41:12.304: E/zqh(29721): │ Method.invokeNative  (Method.java:-2)
09-16 15:41:12.304: E/zqh(29721): │    ActivityThread.main  (ActivityThread.java:5120)
09-16 15:41:12.304: E/zqh(29721): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
09-16 15:41:12.304: E/zqh(29721): │ 我是error级别的log日志
09-16 15:41:12.304: E/zqh(29721): └───────────────────────────────────────────────────────────

2.输出Json/Xml类型的日志:

String route = new Gson().toJson(infor);
Logger.json(route);
日志输出:

09-16 15:41:12.284: D/zqh(29721): ┌──────────────────────────────────────────────
09-16 15:41:12.284: D/zqh(29721): │ Method.invokeNative  (Method.java:-2)
09-16 15:41:12.284: D/zqh(29721): │    ActivityThread.main  (ActivityThread.java:5120)
09-16 15:41:12.284: D/zqh(29721): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
09-16 15:41:12.284: D/zqh(29721): │ {
09-16 15:41:12.284: D/zqh(29721): │   "mcd": "9d0b77228dd94f84b208a9d3e77f6007",
09-16 15:41:12.284: D/zqh(29721): │   "psn": "Sxxxxxxxxxx",
09-16 15:41:12.284: D/zqh(29721): │   "mw": "1",
09-16 15:41:12.284: D/zqh(29721): │   "pc": "5",
09-16 15:41:12.284: D/zqh(29721): │   "catalog": "1",
09-16 15:41:12.284: D/zqh(29721): │   "vrd": "000000000",
09-16 15:41:12.284: D/zqh(29721): │   "pn": "1",
09-16 15:41:12.284: D/zqh(29721): │   "dsn": "122006010xxx",
09-16 15:41:12.284: D/zqh(29721): │   "sw": "20170916154112",
09-16 15:41:12.294: D/zqh(29721): │   "de": "2"
09-16 15:41:12.294: D/zqh(29721): │ }
09-16 15:41:12.294: D/zqh(29721): └────────────────────────────────────────────

同理,xml日志输出也是一样的。

3.若是在项目上线之后,你想隐藏日志那样你就要实现:

Logger.addLogAdapter(new AndroidLogAdapter() {
  @Override public boolean isLoggable(int priority, String tag) {
    return BuildConfig.DEBUG;
  }
});

该方法会覆盖isLoggable以保证项目上线之后就不会有日志输出了。

4.有些日志需要保存到文件中,Orhan Obut大神Logger也提供了相应的方法:

Logger.addLogAdapter(new DiskLogAdapter());

当然如果你要,只保存指定Tag的Log日志,就要初始化:

Logger.addLogAdapter(new AndroidLogAdapter() {
  @Override public boolean isLoggable(int priority, String tag) {
    return BuildConfig.DEBUG;
  }
});

设置完成这些以后,在sd下面就会看到保存的log文件了:

除此之外,你还可以利用Studio中的过滤器进行设置简化输出:

以上是我对Logger的简单了解,不详之处希望大家能够谅解,不对之处,欢迎大家指出,以便共同学习之,文章最后为还在用eclipse的童鞋附上jar包。

jar包链接:http://download.csdn.net/download/hanfengzqh/9981914







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值