2013-02-05 51 views
5

這是一件好事,通過這樣的方法登錄?通用記錄方法

public static void log(final Object... messages) { 
    logger.info(Joiner.on(',').useForNull("null").join(messages)); 
} 

//在代碼的其他部分,我們可以使用逗號而不是字符串連接來調用記錄器方法。請注意喬伊納是一個番石榴課。

log(" Check ",obja.getXXX(),anotherObject.getMethod()); 

期望是乾淨的代碼,方便和性能。

+2

我會添加第二個參數,允許您指定日誌的嚴重性。 – Zylth

回答

2

您可能想加入' '(空白)而不是逗號,但設計方法是一個不錯的主意。

表現明智,這並不理想。你創建一個額外的對象數組和一個joiner加上joiner的內部緩衝區。

所以你可以用這種方法得到3分之2。如果你真的關心性能,使用已經使用類似方法的slf4j

4

我使用SLF4J's Logger接口(與Logback實現),我覺得更清潔閱讀。

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

public class Test { 
    private static final Logger logger = LoggerFactory.getLogger(Test.class); 

    public void method(String name, int age, Address address) { 
     logger.info("Person {}, age {} years old resides at {}", name, age, address); 
    } 
} 
+0

+1我也一樣。 – Alex

+0

@ adarshr我會盡快嘗試SLF4J,只要我有機會。 TY。 – r0ast3d

2

與其他答案一樣,SLF4J的界面更好。

我不明白這是如何提高性能。也許OP有一個特定的用例,一些示例代碼可以解釋它。如果想法是先收集消息並將它們一起發送到日誌方法調用,那麼使用緩衝的appender會更好。