Я пишу библиотеку и хочу использовать perf4j в основном для отображения счетчиков производительности JMX.
Согласно инструкциям здесь http://perf4j.codehaus.org/devguide.html perf4j предназначен для использования в сочетании с log4j, однако, поскольку я пишу библиотеку, я не могу контролировать использование log4j, пользователи библиотека может захотеть или не захотеть использовать log4j, и я не хочу делать это требованием.
Есть ли способ использовать perf4j, в частности программно отображать счетчики perf4j JMX, не требуя использования log4j?
Можно ли использовать perf4j без log4j?
Ответы (2)
Мой ответ более-менее. Perf4J должен где-то выводить свои измерения, и это где-то — фреймворк ведения журналов. Perf4J создан для работы с платформами, совместимыми с Log4J, но вы можете изменить базовую структуру ведения журналов. Например, вместо этого вы можете использовать SFL4J или Commons Logging.
Вот пример, который зависит только от банки perf4j:
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] тег[время]
Обратите внимание, что Perf4J использует файлы конфигурации log4j, а также поддерживает JMX.
Я бы сказал да. Я перешел по ссылке, которую вы разместили, и заметил, что в первом абзаце говорилось
Для некоторых инструментов Perf4J требуются дополнительные зависимости (например, для пользовательских приложений log4j требуется, чтобы jar log4j также находился в вашем пути к классам).
Это говорит мне о том, что отсутствие log4j в вашем пути к классам - это нормально.