是什么?
- 是一个简单,漂亮,强大的Android开源日志工具,代码托管在github上 https://github.com/orhanobut/logger
有何特点?
- 能够提供:
- 线程信息:log在哪个线程
- 类信息:log在哪个类
- 方法信息:log在哪个方法的哪一行
- 漂亮地打印json
- 漂亮的换行分割
- 整洁的输出
- 跳转到源代码
为什么用它?
- 默认实现是对于android.util.Log的封装
- 弥补了“android的logcat的message有字符长度的限制,超过将直接截断”的缺陷
- 支持参数添加占位符来格式化字符串,
Logger.d("hello %s", "world"); - 支持直接打印List,Set,Map,数组类型等引用类型
- 指定任意TAG
- 配置初始化选项
- 支持自定义CustomLogAdapter实现LogAdapter,替换android.util.Log
怎么使用?
1. 配置初始化选项(可选操作,不配置会提供默认配置)
Logger
.init("mytag") // 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
}
注:以上任一配置项都是可选的,可以根据需求组合。最好是在Application的onCreate()里面配置。
默认配置下,Logger.d("hello");效果如下:

- 最上面的区域显示线程信息:Thread:main表示是在主线程。通过设置
Logger.hideThreadInfo()可以隐藏该区域; - 中间的区域显示类和方法信息:按方法调用栈的顺序打印,可以看出
MainActivity的onCreate方法调用了method2方法,后者执行了Logger.d("hello");,并且Logger.d("hello");位于MainActivity类的第73行,鼠标左键单击蓝色链接,就能跳转到Logger.d("hello");处于源代码中的位置。
Logger.methodCount(int)决定打印多少行(每一行代表一个方法),设置Logger.methodCount(3)效果为:
Logger.logLevel(LogLevel)设置日志等级,LogLevel.FULL打印所有日志,LogLevel.NONE不打印日志,发布正式版本应该用LogLevel.NONE。
Logger.methodOffset(int)设置方法的偏移量,设置Logger.methodOffset(1)效果为:
设置Logger.methodOffset(-1)效果为:
Logger.logAdapter(LogAdapter)设置log最终的打印逻辑,默认是AndroidLogAdapter,源码如下:
package com.orhanobut.logger;
import android.util.Log;
class AndroidLogAdapter implements LogAdapter {
@Override public void d(String tag, String message) {
Log.d(tag, message);
}
@Override public void e(String tag, String message) {
Log.e(tag, message);
}
@Override public void w(String tag, String message) {
Log.w(tag, message);
}
@Override public void i(String tag, String message) {
Log.i(tag, message);
}
@Override public void v(String tag, String message) {
Log.v(tag, message);
}
@Override public void wtf(String tag, String message) {
Log.wtf(tag, message);
}
}
- 最下面的区域显示log的最重要部分:message
2. 打印不同级别的log
Logger.v(String message); // VERBOSE级别,可添加占位符
Logger.d(Object object); // DEBUG级别,打印对象
Logger.d(String message); // DEBUG级别,可添加占位符
Logger.i(String message); // INFO级别,可添加占位符
Logger.w(String message); // WARN级别,可添加占位符
Logger.e(String message); // ERROR级别,可添加占位符
Logger.e(Throwable throwable, String message); // ERROR级别,可添加占位符
Logger.wtf(String message); // ASSERT级别,可添加占位符
// 一个综合方法,level可取Logger.VERBOSE...Logger.ASSERT
Logger.log(int level, String tag, String message, Throwable throwable);
String xml = "<note><to>George</to><from>John</from><heading>Reminder</heading><body>Don't forget the meeting!</body></note>";
Logger.xml(xml); // 打印xml
String json = "{" +
"\"employees\": [" +
"{ \"firstName\":\"Bill\" , \"lastName\":\"Gates\" }," +
"{ \"firstName\":\"George\" , \"lastName\":\"Bush\" }," +
"{ \"firstName\":\"Thomas\" , \"lastName\":\"Carter\" }" +
"]" +
"}";
Logger.json(json); // 打印json
3.打印List,Set,Map,数组类型
Logger.d(Object object);
4.指定TAG
Logger.init(String tag);
Logger.t(String tag);
Logger.t(String tag, int methodCount);
5.通过占位符格式化字符串
Logger.d("hello %s %d", "world", 100); // 占位符的使用,打印“hello world 100”
Logger是一个功能强大、美观的Android日志工具,提供线程、类和方法信息,支持JSON格式化打印、引用类型打印及自定义配置。它可以弥补logcat字符长度限制的问题,支持指定TAG和自定义LogAdapter。在应用的onCreate()中配置初始化选项,例如设置日志等级、方法偏移量,以及自定义输出逻辑。此外,Logger还能方便地打印不同级别日志、List、Set、Map和数组类型,且支持占位符格式化字符串。
2010

被折叠的 条评论
为什么被折叠?



