Можно ли использовать perf4j без log4j?

Я пишу библиотеку и хочу использовать perf4j в основном для отображения счетчиков производительности JMX.
Согласно инструкциям здесь http://perf4j.codehaus.org/devguide.html perf4j предназначен для использования в сочетании с log4j, однако, поскольку я пишу библиотеку, я не могу контролировать использование log4j, пользователи библиотека может захотеть или не захотеть использовать log4j, и я не хочу делать это требованием.
Есть ли способ использовать perf4j, в частности программно отображать счетчики perf4j JMX, не требуя использования log4j?


person Ran    schedule 28.02.2010    source источник
comment
Все услуги Codehaus были прекращены. Ваша ссылка на Codehaus не работает.   -  person naXa    schedule 06.01.2016


Ответы (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.

person FabienB    schedule 07.07.2011

Я бы сказал да. Я перешел по ссылке, которую вы разместили, и заметил, что в первом абзаце говорилось

Для некоторых инструментов Perf4J требуются дополнительные зависимости (например, для пользовательских приложений log4j требуется, чтобы jar log4j также находился в вашем пути к классам).

Это говорит мне о том, что отсутствие log4j в вашем пути к классам - это нормально.

person Paul Clapham    schedule 28.02.2010
comment
В частности, приложения JMX выглядят так, как будто они могут работать только с log4j.xml, поэтому мне было интересно, есть ли пример без log4j. На странице, на которую я ссылался, этого нет, но, возможно, он где-то там... - person Ran; 28.02.2010
comment
Ну, кажется, есть пара примеров, которые не используют log4j, но большинство из них его используют. Однако большинство людей без колебаний указывают зависимости, когда они существуют (как часто делает та страница, на которую вы ссылаетесь), поэтому я не уверен, почему вы не решаетесь это сделать. - person Paul Clapham; 03.03.2010
comment
Функции в perf4j, которые я хотел бы использовать, требуют log4j.xml (а не log4j.properties), что, хотя и является предпочтительным способом, не очень распространено во многих существующих приложениях, поэтому я не хочу перегружать требования, делая мои пользователи переходят из .properties в .xml. Однажды меня заставили сделать это, и это было не по-крестьянски... - person Ran; 07.03.2010
comment
Итак, теперь вы знаете требования, которые налагает на вас perf4j для того, что вы хотите сделать. Вы можете принять их или нет. Если затраты на их принятие превышают выгоду, которую даст perf4j, не используйте perf4j. В противном случае примите затраты, зная, что в итоге вы получите большую выгоду. - person Paul Clapham; 08.03.2010