github地址: com.orhanobut.logger.Logger
优点
- 弥补了 logcat信息打印字符长度限制的缺陷, 信息长度过长被截断
- 打印信息详细丰富:打印属于那个线程、那个类、哪一行,打印json、xml、map、list等很多类型,而且打印跟使用一些工具效果接近,一目了然
- 甚至点击下跳转到源代码
开始学习
1.初始化参数
FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
.showThreadInfo(false) // (可选) 是否显示线程信息,默认为ture
.methodCount(0) // (可选) 显示的方法行数,默认为2
.methodOffset(7) // (可选)
.logStrategy(customLog) // (可选) 更改要打印的日志策略
.tag("My custom tag") // (可选) 每个日志的全局标记. 默认 PRETTY_LOGGER
.build();
Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));
android studio默认的logcat默认过滤关键字是PRETTY_LOGGER,可通过tag方法设置的参数名替换默认关键字
2.支持集合(仅适用于调试日志)
支持直接打印map、set、list、array数据
Logger.d(MAP);
Logger.d(SET);
Logger.d(LIST);
Logger.d(ARRAY);
Logger.addLogAdapter(new AndroidLogAdapter());
List<Student> list = new ArrayList<>();
list.add(new Student("zhangsan", "9"));
list.add(new Student("lisi", "19"));
Logger.d(list);
list打印效果如下:list的类型如果是对象就是下面这样,如果类型是String,打印出来跟数组效果差不多。
Logger.addLogAdapter(new AndroidLogAdapter());
Map map = new HashMap();
map.put("zhangsan", "9");
map.put("lisi", "19");
Logger.d(map);
map打印效果如下:
3.Json和Xml支持(输出将处于调试级别)
支持按json和xml格式打印数据
Logger.json(JSON_CONTENT);
Logger.xml(XML_CONTENT);
Logger.addLogAdapter(new AndroidLogAdapter());
String JSON_CONTENT = "{\"name\": \"John Doe\", \"age\": 18, \"address\": {\"country\" : \"china\", \"zip-code\": \"10000\"}}";
Logger.json(JSON_CONTENT);
json打印效果如下:
Logger.addLogAdapter(new AndroidLogAdapter());
String XML_CONTENT = "<note>\n" +
"<to>George</to>\n" +
"<from>John</from>\n" +
"<heading>Reminder</heading>\n" +
"<body>Don't forget the meeting!</body>\n" +
"</note>";
Logger.xml(XML_CONTENT);
xml打印效果如下
4.打印开关,通过返回值控制是否打印输出,可以达到正式版本控制不打印的需求
Logger.addLogAdapter(new AndroidLogAdapter() {
@Override public boolean isLoggable(int priority, String tag) {
return BuildConfig.DEBUG;
}
});
5.将日志保存到文件
该用下面这个语句,就可以把打印信息保存到文件。DiskLogAdapter
Logger.addLogAdapter(new DiskLogAdapter());
保存的路径:sd卡根目录下的logger文件夹下
/storage/emulated/0/logger/logs_0.csv
Logger.addLogAdapter(new DiskLogAdapter());
String XML_CONTENT = "<note>\n" +
"<to>George</to>\n" +
"<from>John</from>\n" +
"<heading>Reminder</heading>\n" +
"<body>Don't forget the meeting!</body>\n" +
"</note>";
Logger.xml(XML_CONTENT);
参考: https://blog.csdn.net/weixin_35691921/article/details/98873514