2012-05-02 2 views
2

Я знаю, в настоящее время наиболее подходящая комбинация является SLF4J + Logback, однако, учитывая мое требование очень простая регистрация, мои простые вопросыПроизводительность и память След Java Logging, Log4J, Logback

1> Производительность & памяти отпечаток стопы мудрый, который лучше между Java Logging & Log4J и почему?

2> Производительность & Память ножной печати, которая лучше между Java Logging & (SLF4J + Logback) и почему?

+2

Учитывая ваше требование, которое должно быть неактуальным. Резервное копирование очень оптимизировано для минимизации потерь ресурсов при подавленных операторах журналов (ниже установленного порога). JUL, ну, базовый, без особых оптимизаций. –

+1

Лучший способ узнать: написать тест. Если вы не можете получить тестовую работу, то SO может быть хорошим местом для запроса ответов на конкретные проблемы, возникающие в результате такого теста. –

+0

Для лучшей производительности требуется кэширование в памяти. Вы должны быть очень четко о том, как вы измеряете. –

ответ

2

учитывая мое требование является очень простой лесозаготовками

Тогда вы должны беспокоиться только о simplicitly. Java Logging, вероятно, будет самым простым решением, и его производительность, вероятно, будет в порядке.

Недостаток памяти большинства регистраторов не является проблемой. Иногда производительность, но если у вас нет низкой задержки (субмилли-секунд) или высокой пропускной способности (тысячи зарегистрированных событий в секунду), я бы не стал беспокоиться об этом.

+0

Проблема с эффективностью ведения журнала заключается в том, что вы обычно хотите быть уверенным, что все регистрируется при сбое вашей программы. Если что-то еще находится в буфере и не сохраняется, вы не можете его увидеть. –

+0

В этом случае более эффективное и сложное решение, использующее буферизацию или асинхронное ведение журнала, на самом деле является недостатком, если у вас внезапный сбой. Я предпочитаю использовать файлы с отображением памяти, которые являются синхронными и имеют очень низкую задержку (и не теряются при сбое приложения). Но я бы не назвал их простейшими. ;) –

+0

Имея только недавно возможность даже _consider_ Java 6 в производстве, это в значительной степени неизвестная мне территория. Что бы вы предложили заглянуть в журнал или java.util.logging? –

2

Я мог бы дать вам следующий совет: если вы не делаете что-то просто для удовольствия, очень вероятно, что ваш код будет расширяться, и вам придется переписать все операторы журналов в API качества продукции. Если это так, я предлагаю вам использовать SLF4J, который по-прежнему оставляет вам возможность использовать JUL, Log4j или logback.

3

«Очень простая регистрация» обычно нет.

Куда войдут записи журнала? Если в файлах, как насчет сохранения файлов журнала вместо перезаписывания при перезапуске? Что произойдет с устаревшими сохраненными файлами журнала?

Я бы порекомендовал вам использовать slf4j для API в вашем собственном коде. И, если у вас нет других модулей или политик, применяющих конкретное решение, я бы предложил logback, так как он наиболее активно поддерживается на данный момент, и вы можете заменить его позже log4j или jul, если это необходимо.

Кроме того, slf4j дает вам {}, что является самым большим улучшением для входа в клиенту, который я видел до сих пор.