格式化(Formatter)
设计目标
Formatter 库提供标准的格式化操作,目前支持:
- JSON 串和 JSONObject/JSONArray
- 任意 Collection 和 Map
- 任意 单一 对象
使用
请注意:使用该扩展需要你添加额外的依赖,参见 下载和设置。请放心,该扩展是轻量级的。
在加入依赖之后,DebugPrinter
和其他继承 AbsPrinter
的打印器会自动生效;其他自定义的 Printer
,则需要你手动设置:
@Override
public Formatter getFormatter() {
return mFormatter;
}
递归深度
要完整输出一个对象是很困难的事情。 如果只输出基本类型及String,则很多情形下的 POJO 的嵌套引用都没办法格式化,但是完全递归,则会在发生循环引用或单例对象上发生栈溢出和OOM(该问题的 原始 Issue
)。
PLog 对此的解决办法是引入了一个配置项:递归深度。 通过限制递归深度,既可以避免上述问题,也可以顺便解决一些递归深度过长导致日志冗余的情况。
原始代码
该扩展库的原始代码在 这里 。