我眼中最好用的Android日志记录库Logger。

2022-05-10 14:57:08 浏览数 (1)

这是logger github地址

简介

我刚开始学c的时候最喜欢用的就是用printf()打印信息。后来学java的时候又经常用System.out.println()这个方法。再后来学Android的时候接触到了Log工具类更是欢喜的不得了。但程序员都是懒的。后来Log敲烦了,心里总有些不爽。好在AndroidStudio提供了logt生成TAG,logd直接生成log.d()这样确实让我更爽了。 不过今天我介绍一款非常有名的开源库logger。

本文也是介绍它的基本使用,摘抄于github上它的README。没有什么技术含量。但没有使用的它的同学可以尝试一下。

Logger是什么? Android平台上一款强大、简洁、优雅的日志打印框架。 Logger提供如下功能: * 线程信息 * 类信息 * 方法信息 * 优雅地打印json内容 * 优雅地打印新的一行 * 简洁的输出格式 * 可以从log中点击跳转到代码

下载

Android Studio中

代码语言:javascript复制
compile 'com.orhanobut:logger:1.15'

特性

Android原生的log消息效果如下:

代码语言:javascript复制
Log.d(TAG,"hello");
代码语言:javascript复制
D/MainActivity: onCreate: 

而Logger效果如下:

代码语言:javascript复制
Logger.d("hello");
Logger.d("hello %s %d", "world", 5);   // String.format
代码语言:javascript复制
Logger.d("hello");
Logger.e("hello");
Logger.w("hello");
Logger.v("hello");
Logger.wtf("hello");
Logger.json(JSON_CONTENT);
Logger.xml(XML_CONTENT);
Logger.log(DEBUG, "tag", "message", throwable);

格式化参数打印功能

代码语言:javascript复制
Logger.d("hello %s", "world");

常用容器的支持如Array、Set、List

代码语言:javascript复制
Logger.d(list);
Logger.d(map);
Logger.d(set);
Logger.d(new String[]);

定义Logger的标签TAG.

标签默认为PRETTYLOGGER

定义统一的全局标签

代码语言:javascript复制
Logger.init(YOUR_TAG);

定义局部临时的标签

代码语言:javascript复制
Logger.t("mytag").d("hello");

设置(可选)

Logger可以在初始化的时候配置选项,它们只能被设置一次,因此它们最好的代码编写的地方就是你工程的Application。它们的所有项都是可以配置的。当然不配置也可以的,你可以作用默认的配置。

代码语言:javascript复制
Logger
  .init(YOUR_TAG)                 // default PRETTYLOGGER or use just init()
  .methodCount(3)                 // default 2
  .hideThreadInfo()               // default shown
  .logLevel(LogLevel.NONE)        // default LogLevel.FULL
  .methodOffset(2)                // default 0
  .logAdapter(new AndroidLogAdapter()); //default AndroidLogAdapter
}

用另外的log工具替换原生的Log.

  • 实现LogAdapter
  • 在初始化的时候设置
代码语言:javascript复制
.logAdapter(new CustomLogAdapter())

更多的log示例

代码语言:javascript复制
Logger.d("hello");
Logger.e(exception, "message");
Logger.json(JSON_CONTENT);

更改logger日志中方法的显示数。

默认显示2个方法。可以通过以下代码设置

代码语言:javascript复制
Logger.init().methodCount(1);
或者
Logger.t(1).d("test");

上面的图片显示得是两个方法名

这张图片只显示一张图片了

隐藏线程信息

代码语言:javascript复制
Logger.init().methodCount(1).hideThreadInfo();

只显示Log信息

只显示log信息的意思就是不显示方法名和线程信息

代码语言:javascript复制
Logger.init().methodCount(0).hideThreadInfo();

优雅地打印json数据

代码语言:javascript复制
Logger.json(YOUR_JSON_DATA);

打印异常信息

代码语言:javascript复制
Logger.e(exception,"message");

备注

  • 使用过滤器效果更好。
  • 确保AndroidStudio wrap option选项被禁用

其它也不多说了,总之优雅大方。

0 人点赞