Skip to content

Formatting

Muyangmin edited this page Sep 8, 2016 · 2 revisions

PLog提供两种格式化方案:

  1. objects(Object... objs)方法专用于打印对象列表。
  2. v, d, i, w, e系列方法可以接受Object...参数。

Format参数的使用

这一节主要解释使用(String, Object...)系列方法时可能遇到的问题。 示例:

//WRONG:给定的参数不符合String format的规则
PLog.d("This is a log for %d repository", "Android-PLog");
//WRONG:由于方法签名的原因,该方法会被默认为调用`d(String tag, String msg)`
PLog.d("This is a log for %s repository.", "Android-PLog");
//RIGHT:强制使用format
PLog.d("This is a log for %s repository", (Object)"Android-PLog");
//RIGHT: 使用3个参数
PLog.d("SampleTag", "This is a log for %s repository", "Android-PLog");

尽量直接使用objects方法打印对象列表

目前实现中两种方案最终都会进入同一个格式化流程,但是格式化方案有所区别:

  1. 调用objects(...)方法,会将所有的参数以格式化形式打印。
  2. 使用v, d, i, w, e系列方案,如果有提供非空的msg参数,则PLog认为后面的Object参数是用于格式化该msg,因此如果msg中不包含%d, %s等格式化符号,则参数可能会被忽略;如果提供的参数列表不对称,还可能触发异常。请参见String#format(String, Object...)方法。
  3. 使用上述方法但提供的msg为空,则与调用object(...)方法相同。

基于上述逻辑,如果只需要打印对象列表,PLog强烈推荐直接调用objects方法进行打印。