-
Notifications
You must be signed in to change notification settings - Fork 39
Usage
Tony Shen edited this page Oct 27, 2021
·
16 revisions
如果不考虑显示日志的tag,可以直接使用,L 会提供默认的tag。
String s = "abcd";
L.i(s);
如果需要使用 tag,可以在 Activity 的 onCreate() 中添加如下的代码,类名则对应是tag的名称
L.init(this.getClass());
当然,init() 除了支持传递 Class 对象,还支持传 String 对象。
支持以下几种日志级别,除此之外还能将任何对象打印成json格式
方法名 | 作用 |
---|---|
e() | Error级别打印日志 |
w() | Warn级别打印日志 |
i() | Info级别打印日志 |
d() | Debug级别打印日志 |
json() | 将日志以json格式打印出来 |
还可以设置全局的日志级别,最好在Application中进行全局的配置。
java中的使用方法:
L.setLogLevel(LogLevel.INFO);
kotlin中的使用方法:
L.logLevel= LogLevel.INFO
以e、w、i、d打印的日志风格如下:
第一行显示线程名
第二行显示类中打印的行数
第三行显示打印的具体内容
╔════════════════════════════════════════════════════════════════════════════════════════
║ Thread: main
╟────────────────────────────────────────────────────────────────────────────────────────
║ cn.salesuite.saf.aspects.TraceAspect.traceMethod (TraceAspect.java:35)
╟────────────────────────────────────────────────────────────────────────────────────────
║ loadUser() take [14ms]
╚════════════════════════════════════════════════════════════════════════════════════════
json方法的使用
Object obj = ...
L.json(obj);
多种对象类型都可以使用json()方法打印成json风格。
User u = new User();
u.userName = "tony";
u.password = "123456";
List<User> list = new ArrayList<>();
list.add(u);
list.add(u);
L.json(list);
List<String> ids = new ArrayList<>();
ids.add("123");
ids.add("456");
L.json(ids);
List<Double> idd = new ArrayList<>();
idd.add(123D);
idd.add(456D);
L.json(idd);
打印效果:
User u = new User();
u.userName = "tony";
u.password = "123456";
Map<String,User> map = new HashMap<>();
map.put("tony",u);
map.put("tt",u);
L.json(map);
Map<String,String> map2 = new HashMap<>();
map2.put("tony","shen");
map2.put("tt","ziyu");
L.json(map2);
Map<String,Boolean> map3 = new HashMap<>();
map3.put("tony",true);
map3.put("tt",false);
L.json(map3);
打印效果:
String jsonString = "{\n" +
" \"employees\": [\n" +
" {\n" +
" \"firstName\": \"Bill\",\n" +
" \"lastName\": \"Gates\"\n" +
" },\n" +
" {\n" +
" \"firstName\": \"George\",\n" +
" \"lastName\": \"Bush\"\n" +
" },\n" +
" {\n" +
" \"firstName\": \"Thomas\",\n" +
" \"lastName\": \"Carter\"\n" +
" }\n" +
" ]\n" +
"}";
L.json(jsonString);
打印效果:
User u = new User();
u.userName = "tony";
u.password = "123456";
L.json(new WeakReference<User>(u));
打印效果:
L.e(new NullPointerException("this object is null"));
或者
L.json(new NullPointerException("this object is null"));
打印效果:
User u = new User();
u.userName = "tony";
u.password = "123456";
Bundle bundle = new Bundle();
bundle.putString("key1","this is key1");
bundle.putInt("key2",100);
bundle.putBoolean("key3",true);
bundle.putSerializable("key4",u);
L.json(bundle);
打印效果:
User u = new User();
u.userName = "tony";
u.password = "123456";
Bundle bundle = new Bundle();
bundle.putString("key1","this is key1");
bundle.putInt("key2",100);
bundle.putBoolean("key3",true);
bundle.putSerializable("key4",u);
Intent i = new Intent(this,MainActivity.class);
i.putExtras(bundle);
L.json(i);
打印效果:
Uri uri = Uri.parse("http://www.java2s.com:8080/yourpath/fileName.htm?stove=10&path=32&id=4#harvic");
L.json(uri);
打印效果:
之前公司的产品做过 deep link 以及移动端广告相关的 sdk。从开发这些产品中,我们获得的经验是日志里要是能够记录手机的一些信息,方便根据机型和操作系统版本来调试bug就好了。
由此产生了 L 的Header。通常情况下,把手机的一些信息放入 Header 中,方便调试时一眼识别手机出的机型、操作系统版本号、App版本号等等。一旦定义好 Header,所有使用 L 的日志上都会显示 Header 的内容。
借助 Kotlin 的扩展函数的特性,任何对象都可以使用json()
方法来打印其自身。
也支持形如:
L.i {
"hi $message"
}
L.i("customerTag") {
"hi $message"
}