还有一种基于消息格式的方便的替代方法。假设entry是一个object,你可以编写:Object entry = new SomeObject();
logger.debug("The entry is {}.", entry);在评估是否作记录后,仅当需要作记录时,logger才会格式化消息,用entry的字符串值替换"{}"。换句话说,当记录语句被禁用时,这种方法不会产生参数构造所带来的性能消耗。
下面的 2 个语句将会输出同样的日志内容,在 disabled logging 状态启用的情况下,第二条语句将会至少比第一条语句输出快 30%。logger.debug("The new entry is "+entry+".");
logger.debug("The new entry is {}.", entry);如果有 2 个参数,你可以使用下面的方式进行书写:logger.debug("The new entry is {}. It replaces {}.", entry, oldEntry);如果你有 3 个或者更多的参数需要输出,你可以使用 Object 数组的方式定义变量,然后输出。
例如你可以使用下面的方式输出日志:Object[] paramArray = {newVal, below, above};
logger.debug("Value {} was inserted between {} and {}.", paramArray);SLF4J 1.7.7 版本后的说明
从 SLF4J 1.7 开始,参数必须在 Object 中使用。
请参考下面帖子中的内容:http://www.isharkfly.com/thread-29153-1-1.html
REF:http://cwiki.ossez.com/pages/viewpage.action?pageId=4719684