-
Notifications
You must be signed in to change notification settings - Fork 31
Formatting
Muyangmin edited this page Sep 8, 2016
·
2 revisions
PLog提供两种格式化方案:
-
objects(Object... objs)
方法专用于打印对象列表。 -
v, d, i, w, e
系列方法可以接受Object...
参数。
这一节主要解释使用(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(...)
方法,会将所有的参数以格式化形式打印。 - 使用
v, d, i, w, e
系列方案,如果有提供非空的msg
参数,则PLog
认为后面的Object
参数是用于格式化该msg,因此如果msg中不包含%d
,%s
等格式化符号,则参数可能会被忽略;如果提供的参数列表不对称,还可能触发异常。请参见String#format(String, Object...)
方法。 - 使用上述方法但提供的msg为空,则与调用
object(...)
方法相同。
基于上述逻辑,如果只需要打印对象列表,PLog强烈推荐直接调用objects
方法进行打印。