2010-02-28 211 views
1

我正在寫一個庫,並希望使用perf4j主要是爲了公開JMX性能計數器。
根據這裏的說明http://perf4j.codehaus.org/devguide.html perf4j是爲了與log4j結合使用,但是由於我正在編寫一個庫,我無法控制log4j的使用,所以庫的用戶可能會也可能不希望使用log4j,不想讓這成爲一項要求。
有沒有辦法使用perf4j,特別是暴露perf4j JMX計數器編程方式而不需要使用log4j?是否可以在沒有log4j的情況下使用perf4j?

+0

所有Codehaus服務已終止。您與Codehaus的鏈接已損壞。 – naXa 2016-01-06 08:15:00

回答

0

我會說是的。我跟着你發佈的鏈接,發現第一段說

一些的的Perf4工具需要 額外的依賴(例如, 定製的log4j附加目的地需要 log4j的罐子也可以在你的 類路徑)。

這表明在我的類路徑中沒有log4j是正常的事情。

+0

具體來說,JMX appender看起來像只能使用log4j.xml,所以我想知道是否有沒有log4j的例子。我鏈接的頁面沒有這個,但也許它在那裏... – Ran 2010-02-28 06:03:24

+0

好吧,似乎有幾個例子不使用log4j,但他們大多數都使用它。然而,大多數人會毫不猶豫地指定它們存在時的依賴關係(因爲您鏈接的頁面經常會這樣做),所以我不確定爲什麼你會猶豫。 – 2010-03-03 04:12:47

+0

perf4j中的功能我想要使用的功能需要log4j.xml(而不是log4j.properties),儘管這是首選方式,但在許多現有應用程序中並不常見,所以我不想過多地滿足使我的用戶從.properties移到.xml。 我被迫這樣做了一次,它不是農民...... – Ran 2010-03-07 08:01:06

1

我的答案或多或少。 Perf4J需要在某個地方輸出測量結果,這個地方是一個日誌框架。 Perf4J被構建爲與Log4J兼容框架一起工作,但您可以更改基礎日誌記錄框架。例如,您可以選擇使用SFL4J或Commons Logging。

這裏是僅依賴的Perf4的罐子樣本:

import org.perf4j.LoggingStopWatch; 
import org.perf4j.StopWatch; 

public class Perf4JEx { 
    public static void main (String[] args) { 
     StopWatch stopWatch = new LoggingStopWatch(); 
     // for demo purposes just sleep 
     Thread.sleep(170); 
     stopWatch.stop("timing"); 
    } 
} 

此代碼將輸出測量到標準輸出(默認簡約日誌框架)。

開始[1310075342634]時間[171]標記[定時]

注意的Perf4使用log4j配置文件,同時還支持JMX。

相關問題