概念

在 PLog 中,每个 Printer 都是一个独立的具备拦截功能的输出管道。

独立输出

这种管道的独立性体现在:

  • 每个管道可以独立输出,这意味着你可以在 LogCat 看日志的同事还写入SD卡某些位置
  • 每个管道的输出样式可以自定义,比如在 LogCat 中超长自动换行,而写入文件时就不需要
  • 管道间无权获知其他管道的存在,也不能拦截其他管道的输出

拦截本通道的输出

虽然不能拦截其他管道的输出,但是 Printer 可以控制自己的输出。 Printer 继承自 Interceptor 接口,因此你可以使用与 全局拦截器 一样的技术来拦截本通道的输出:

    @Override
	public boolean onIntercept(int level, String tag, Category category, String msg){
	    return true;
	}

DebugPrinter

只要你引入了核心库,你就可以使用 DebugPrinter,它用于向标准的 LogCat 中输出日志。 但请注意,如果你从构造函数中传入一个 false,它将永远不输出消息。

如果你添加了 formatter 依赖,它将自动格式化,无需你再做进一步设置。

此外,DebugPrinter 还默认做了换行操作,并解除了 LogCat 超过 4K 字符会自动截断的问题。

FilePrinter

PLog 提供了一个供参考的 FilePrinter 实现,你需要额外添加 依赖 来使用。