2011-10-27 48 views
10

我使用的是Java默認記錄,而現在它的打印大量無用的垃圾到輸出,這裏是一個例子,這行代碼:如何從2行java.util.logging輸出中取消日期行?

log.info("Logging pointless information...") 

將輸出所有這一切:

Oct 26, 2011 9:37:57 PM java.util.logging.LogManager$RootLogger log 
INFO: Logging pointless information... 

除了第二行,我不需要知道任何東西。我怎樣才能刪除這個垃圾?我想要的只是簡單的文本記錄。

+1

FWIW,「無用信息」在任何規模或持續時間的程序中都非常有用。 –

+1

@DaveNewton - 就我個人而言,我簡單地記錄控制檯和詳細記錄文件(使用XML格式化程序)。所以我認爲這兩種形式都有很大的價值 –

+0

我知道,這只是一個諷刺的例子。 –

回答

3

您需要create a a different Formatter並改爲使用它。

public class BriefFormatter extends Formatter 
{ 
    public BriefFormatter() { super(); } 

    @Override 
    public String format(final LogRecord record) 
    { 
     return record.getMessage(); 
    } 
} 
2

這些要求幾乎是同一個問題:

下面是如何實現賈羅德·羅伯遜的建議爲例:http://www.javalobby.org/java/forums/t18515.html

在一般,要應用格式化程序創建一個文件,通常稱爲logging.properties。其中放了這樣一行:

java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 

或任何您的格式化程序類。然後添加精氨酸這樣的JVM:

-Djava.util.logging.config.file=logging.properties 

或者使用更強大的日誌系統,像的logback或Log4j的,其中有預建格式化爲您節省一些編碼。

11

也許這是稍後添加的,但至少在Java 7中,java.util.logging.SimpleFormatter支持從系統屬性獲取其格式。這JVM參數將只打印第二行:

-Djava.util.logging.SimpleFormatter.format='%4$s: %5$s%6$s%n' 

就個人而言,我喜歡把所有的日期/來源的信息,但擺脫換行符(並使用了更緊湊,國際日期格式):

-Djava.util.logging.SimpleFormatter.format='%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS %4$s %2$s %5$s%6$s%n' 
+1

你真的不知道你做了多少美好的生活。由於不熟悉java,這節省了至少5個小時的工作時間。 – rlpowell

+0

今天,由於你的答案,成千上萬的小寶寶,小貓和小寶貝小貓已經被保存。感恩的欣賞是爲了。 – Andrew

相關問題