日志几乎是作为码农的我们每天都要打交道的对象,出bug的时候,刷满屏幕的Log中排查,这酸爽......整齐规范的Log信息能够让我们快速得定位问题,提高效率,除此之外还看着心情舒服。
Logger GitHub地址:https://github.com/orhanobut/logger
Logger框架提供了很多实用的功能:
- 输出线程信息
- 输出类信息
- 输出方法信息
- 输出格式化的List、Map、Json、Xml
- 快速定位
- 日志控制,等....
下面来着官方的图片:
第一眼看到,真心觉得舒服
使用Logger也很简单,集成使用也只是一杯茶的事。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
首先导入依赖库:
// Logger
implementation 'com.orhanobut:logger:2.2.0'
MyApplication当中初始化:
//日志控制
Logger.addLogAdapter(new AndroidLogAdapter());
当然不能忘记AndroidMainfest.xml中配置MyApplication
使用Logger输出日志:
// 各种打印
Logger.d("debug");
Logger.e("error");
Logger.w("warning");
Logger.v("verbose");
Logger.i("information");
Logger.wtf("What a Terrible Failure");
// 打印数组对象
Logger.d(string);
// 打印list
Logger.d(list);
// 打印map
Logger.d(map);
// 打印Json
Logger.json(json);
// 打印xml
Logger.xml(xml);
Log显示:
2018-11-30 15:37:33.300 5383-5383 D/PRETTY_LOGGER: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.301 5383-5383 D/PRETTY_LOGGER: │ Thread: main
2018-11-30 15:37:33.301 5383-5383 D/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.301 5383-5383 D/PRETTY_LOGGER: │ MainActivity.onCreate (MainActivity.java:57)
2018-11-30 15:37:33.301 5383-5383 D/PRETTY_LOGGER: │ MainActivity.showLog (MainActivity.java:63)
2018-11-30 15:37:33.302 5383-5383 D/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.302 5383-5383 D/PRETTY_LOGGER: │ debug
2018-11-30 15:37:33.302 5383-5383 D/PRETTY_LOGGER: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.302 5383-5383 E/PRETTY_LOGGER: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.302 5383-5383 E/PRETTY_LOGGER: │ Thread: main
2018-11-30 15:37:33.302 5383-5383 E/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.302 5383-5383 E/PRETTY_LOGGER: │ MainActivity.onCreate (MainActivity.java:57)
2018-11-30 15:37:33.302 5383-5383 E/PRETTY_LOGGER: │ MainActivity.showLog (MainActivity.java:64)
2018-11-30 15:37:33.302 5383-5383 E/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.302 5383-5383 E/PRETTY_LOGGER: │ error
2018-11-30 15:37:33.302 5383-5383 E/PRETTY_LOGGER: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.303 5383-5383 W/PRETTY_LOGGER: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.303 5383-5383 W/PRETTY_LOGGER: │ Thread: main
2018-11-30 15:37:33.303 5383-5383 W/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.303 5383-5383 W/PRETTY_LOGGER: │ MainActivity.onCreate (MainActivity.java:57)
2018-11-30 15:37:33.303 5383-5383 W/PRETTY_LOGGER: │ MainActivity.showLog (MainActivity.java:65)
2018-11-30 15:37:33.303 5383-5383 W/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.303 5383-5383 W/PRETTY_LOGGER: │ warning
2018-11-30 15:37:33.303 5383-5383 W/PRETTY_LOGGER: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.307 5383-5383 V/PRETTY_LOGGER: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.307 5383-5383 V/PRETTY_LOGGER: │ Thread: main
2018-11-30 15:37:33.307 5383-5383 V/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.307 5383-5383 V/PRETTY_LOGGER: │ MainActivity.onCreate (MainActivity.java:57)
2018-11-30 15:37:33.307 5383-5383 V/PRETTY_LOGGER: │ MainActivity.showLog (MainActivity.java:66)
2018-11-30 15:37:33.307 5383-5383 V/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.307 5383-5383 V/PRETTY_LOGGER: │ verbose
2018-11-30 15:37:33.307 5383-5383 V/PRETTY_LOGGER: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.308 5383-5383 I/PRETTY_LOGGER: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.309 5383-5383 I/PRETTY_LOGGER: │ Thread: main
2018-11-30 15:37:33.309 5383-5383 I/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.309 5383-5383 I/PRETTY_LOGGER: │ MainActivity.onCreate (MainActivity.java:57)
2018-11-30 15:37:33.310 5383-5383 I/PRETTY_LOGGER: │ MainActivity.showLog (MainActivity.java:67)
2018-11-30 15:37:33.310 5383-5383 I/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.310 5383-5383 I/PRETTY_LOGGER: │ information
2018-11-30 15:37:33.313 5383-5383 I/PRETTY_LOGGER: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.313 5383-5383 A/PRETTY_LOGGER: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.313 5383-5383 A/PRETTY_LOGGER: │ Thread: main
2018-11-30 15:37:33.313 5383-5383 A/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.313 5383-5383 A/PRETTY_LOGGER: │ MainActivity.onCreate (MainActivity.java:57)
2018-11-30 15:37:33.314 5383-5383 A/PRETTY_LOGGER: │ MainActivity.showLog (MainActivity.java:68)
2018-11-30 15:37:33.314 5383-5383 A/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.314 5383-5383 A/PRETTY_LOGGER: │ What a Terrible Failure
2018-11-30 15:37:33.314 5383-5383 A/PRETTY_LOGGER: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.314 5383-5383 D/PRETTY_LOGGER: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.314 5383-5383 D/PRETTY_LOGGER: │ Thread: main
2018-11-30 15:37:33.314 5383-5383 D/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.315 5383-5383 D/PRETTY_LOGGER: │ MainActivity.onCreate (MainActivity.java:57)
2018-11-30 15:37:33.315 5383-5383 D/PRETTY_LOGGER: │ MainActivity.showLog (MainActivity.java:71)
2018-11-30 15:37:33.315 5383-5383 D/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.315 5383-5383 D/PRETTY_LOGGER: │ [array1, array2, array3]
2018-11-30 15:37:33.315 5383-5383 D/PRETTY_LOGGER: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.315 5383-5383 D/PRETTY_LOGGER: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.315 5383-5383 D/PRETTY_LOGGER: │ Thread: main
2018-11-30 15:37:33.315 5383-5383 D/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.315 5383-5383 D/PRETTY_LOGGER: │ MainActivity.onCreate (MainActivity.java:57)
2018-11-30 15:37:33.316 5383-5383 D/PRETTY_LOGGER: │ MainActivity.showLog (MainActivity.java:73)
2018-11-30 15:37:33.316 5383-5383 D/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.316 5383-5383 D/PRETTY_LOGGER: │ [item1, item3, item2]
2018-11-30 15:37:33.316 5383-5383 D/PRETTY_LOGGER: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.316 5383-5383 D/PRETTY_LOGGER: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.316 5383-5383 D/PRETTY_LOGGER: │ Thread: main
2018-11-30 15:37:33.316 5383-5383 D/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.316 5383-5383 D/PRETTY_LOGGER: │ MainActivity.onCreate (MainActivity.java:57)
2018-11-30 15:37:33.328 5383-5383 D/PRETTY_LOGGER: │ MainActivity.showLog (MainActivity.java:75)
2018-11-30 15:37:33.328 5383-5383 D/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.329 5383-5383 D/PRETTY_LOGGER: │ {key1=value1, key2=value2, key3=value3}
2018-11-30 15:37:33.329 5383-5383 D/PRETTY_LOGGER: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.335 5383-5383 D/PRETTY_LOGGER: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.336 5383-5383 D/PRETTY_LOGGER: │ Thread: main
2018-11-30 15:37:33.336 5383-5383 D/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.336 5383-5383 D/PRETTY_LOGGER: │ MainActivity.onCreate (MainActivity.java:57)
2018-11-30 15:37:33.336 5383-5383 D/PRETTY_LOGGER: │ MainActivity.showLog (MainActivity.java:78)
2018-11-30 15:37:33.336 5383-5383 D/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.336 5383-5383 D/PRETTY_LOGGER: │ {
2018-11-30 15:37:33.337 5383-5383 D/PRETTY_LOGGER: │ "status": 200,
2018-11-30 15:37:33.337 5383-5383 D/PRETTY_LOGGER: │ "message": "success",
2018-11-30 15:37:33.337 5383-5383 D/PRETTY_LOGGER: │ "data": {
2018-11-30 15:37:33.337 5383-5383 D/PRETTY_LOGGER: │ "year": 2018,
2018-11-30 15:37:33.337 5383-5383 D/PRETTY_LOGGER: │ "month": 10,
2018-11-30 15:37:33.337 5383-5383 D/PRETTY_LOGGER: │ "day": 1,
2018-11-30 15:37:33.337 5383-5383 D/PRETTY_LOGGER: │ "lunarYear": 2018,
2018-11-30 15:37:33.337 5383-5383 D/PRETTY_LOGGER: │ "lunarMonth": 8,
2018-11-30 15:37:33.337 5383-5383 D/PRETTY_LOGGER: │ "lunarDay": 22,
2018-11-30 15:37:33.337 5383-5383 D/PRETTY_LOGGER: │ "cnyear": "贰零壹捌 ",
2018-11-30 15:37:33.337 5383-5383 D/PRETTY_LOGGER: │ "cnmonth": "八",
2018-11-30 15:37:33.337 5383-5383 D/PRETTY_LOGGER: │ "cnday": "廿二",
2018-11-30 15:37:33.337 5383-5383 D/PRETTY_LOGGER: │ "hyear": "戊戌",
2018-11-30 15:37:33.337 5383-5383 D/PRETTY_LOGGER: │ "cyclicalYear": "戊戌",
2018-11-30 15:37:33.337 5383-5383 D/PRETTY_LOGGER: │ "cyclicalMonth": "辛酉",
2018-11-30 15:37:33.337 5383-5383 D/PRETTY_LOGGER: │ "cyclicalDay": "丙寅",
2018-11-30 15:37:33.338 5383-5383 D/PRETTY_LOGGER: │ "suit": "祭祀,冠笄,会亲友,拆卸,起基,除服,成服,移柩,启钻,安葬,沐浴,捕捉,开光,塑绘",
2018-11-30 15:37:33.338 5383-5383 D/PRETTY_LOGGER: │ "taboo": "作灶,祭祀,入宅,嫁娶",
2018-11-30 15:37:33.338 5383-5383 D/PRETTY_LOGGER: │ "animal": "狗",
2018-11-30 15:37:33.338 5383-5383 D/PRETTY_LOGGER: │ "week": "Monday",
2018-11-30 15:37:33.338 5383-5383 D/PRETTY_LOGGER: │ "festivalList": [
2018-11-30 15:37:33.338 5383-5383 D/PRETTY_LOGGER: │ "国庆节"
2018-11-30 15:37:33.338 5383-5383 D/PRETTY_LOGGER: │ ],
2018-11-30 15:37:33.338 5383-5383 D/PRETTY_LOGGER: │ "jieqi": {
2018-11-30 15:37:33.338 5383-5383 D/PRETTY_LOGGER: │ "9": "寒露",
2018-11-30 15:37:33.338 5383-5383 D/PRETTY_LOGGER: │ "24": "霜降"
2018-11-30 15:37:33.338 5383-5383 D/PRETTY_LOGGER: │ },
2018-11-30 15:37:33.338 5383-5383 D/PRETTY_LOGGER: │ "maxDayInMonth": 29,
2018-11-30 15:37:33.338 5383-5383 D/PRETTY_LOGGER: │ "leap": false,
2018-11-30 15:37:33.338 5383-5383 D/PRETTY_LOGGER: │ "lunarYearString": "戊戌",
2018-11-30 15:37:33.338 5383-5383 D/PRETTY_LOGGER: │ "bigMonth": false
2018-11-30 15:37:33.338 5383-5383 D/PRETTY_LOGGER: │ }
2018-11-30 15:37:33.339 5383-5383 D/PRETTY_LOGGER: │ }
2018-11-30 15:37:33.339 5383-5383 D/PRETTY_LOGGER: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.801 5383-5383 D/PRETTY_LOGGER: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 15:37:33.804 5383-5383 D/PRETTY_LOGGER: │ Thread: main
2018-11-30 15:37:33.804 5383-5383 D/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.804 5383-5383 D/PRETTY_LOGGER: │ MainActivity.onCreate (MainActivity.java:57)
2018-11-30 15:37:33.804 5383-5383 D/PRETTY_LOGGER: │ MainActivity.showLog (MainActivity.java:81)
2018-11-30 15:37:33.805 5383-5383 D/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 15:37:33.806 5383-5383 D/PRETTY_LOGGER: │ <?xml version="1.0" encoding="UTF-8"?>
2018-11-30 15:37:33.806 5383-5383 D/PRETTY_LOGGER: │ <!-- Copyright w3school.com.cn --><note>
2018-11-30 15:37:33.806 5383-5383 D/PRETTY_LOGGER: │ <to>George</to>
2018-11-30 15:37:33.806 5383-5383 D/PRETTY_LOGGER: │ <from>John</from>
2018-11-30 15:37:33.806 5383-5383 D/PRETTY_LOGGER: │ <heading>Reminder</heading>
2018-11-30 15:37:33.806 5383-5383 D/PRETTY_LOGGER: │ <body>Don't forget the meeting!</body>
2018-11-30 15:37:33.806 5383-5383 D/PRETTY_LOGGER: │ </note>
2018-11-30 15:37:33.806 5383-5383 D/PRETTY_LOGGER: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
还可以占位符输出:
// 占位符输出
Logger.e("message: %s", "hello");
2018-11-30 18:56:35.432 6995-6995 E/PRETTY_LOGGER: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2018-11-30 18:56:35.432 6995-6995 E/PRETTY_LOGGER: │ Thread: main
2018-11-30 18:56:35.432 6995-6995 E/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 18:56:35.432 6995-6995 E/PRETTY_LOGGER: │ MainActivity.onCreate (MainActivity.java:57)
2018-11-30 18:56:35.432 6995-6995 E/PRETTY_LOGGER: │ MainActivity.showLog (MainActivity.java:84)
2018-11-30 18:56:35.432 6995-6995 E/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
2018-11-30 18:56:35.432 6995-6995 E/PRETTY_LOGGER: │ message: hello
2018-11-30 18:56:35.432 6995-6995 E/PRETTY_LOGGER: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
日志控制,日常开发调试,日志的输出对问题定位,快速掌握程序运行情况起到作用是很重要的;但是,对于发布的上线软件,输出了程序内部日志则会暴露程序内部信息,严重则会遭受到不可逆转的后果:如信息泄露,技术暴露,Bug,成为黑客入侵的切入点。
Logger提供日志控制,在Logger初始化的时候进行设置, 重写AndroidLogAdapter的isLoggable方法,返回值为BuildConfig.DEBUG(编译生成,调试为true,打包release版本后为false),也可以返回自定义的config文件配置的IS_DEBUG变量值:
// 日志控制
Logger.addLogAdapter(new AndroidLogAdapter() {
@Override
public boolean isLoggable(int priority, @Nullable String tag) {
// 此处返回项目配置的日志控制变量
return BuildConfig.DEBUG;
}
});
Logger自定义,官方给出来的具体说明:
FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
.showThreadInfo(false) // (Optional) Whether to show thread info or not. Default true
.methodCount(0) // (Optional) How many method line to show. Default 2
.methodOffset(7) // (Optional) Hides internal method calls up to offset. Default 5
.logStrategy(customLog) // (Optional) Changes the log strategy to print out. Default LogCat
.tag("My custom tag") // (Optional) Global tag for every log. Default PRETTY_LOGGER
.build();
Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));
对于Android Studio3.1的小伙伴们,Logger输出是不整齐的,网上说这是3.1版本的bug,3.2版本已经修复,上面是使用的是3.2版本。
当然,官网也有给出一些IDE设置优化的建议:过滤筛选,取消设置自动换行,以及设置显示内容
类型的Log框架还有
KLog:https://github.com/ZhaoKaiQiang/KLog,
XLog:https://github.com/elvishew/xLog,
LogUtils:https://github.com/pengwei1024/LogUtils
Logger的使用就暂且到这里了,谢谢!