Что произошло с входом в систему Java? [закрытый]

Альтернативное решение:

reduce(lambda x,y : filter(lambda z: z!=y,x) ,[2,3,5,8],[1,2,6,8])
115
задан Loki 10 December 2008 в 01:27
поделиться

8 ответов

В хронологическом порядке появления API (насколько я знаю):

  • Log4j, потому что почти каждый использует его (по моему опыту)
  • Вход палаты общин, потому что проекты с открытым исходным кодом используют его (таким образом, они могут интегрироваться с любой платформой журналирования, используется в интегрированном решении); особенно допустимый, если Вы - API/платформа/oss и Вы полагаетесь на другие пакеты то использование Вход палаты общин.
  • Вход палаты общин, потому что Вы не хотите "блокировать вниз" к конкретной платформе журналирования (так вместо этого Вы блокируете вниз к тому, что Вход палаты общин дает Вам вместо этого) - я не думаю, что разумно решить использование этой точки как причина.
  • вход Java, потому что Вы не хотите добавлять в дополнительной банке.
  • SLF4j, потому что это является более новым, чем Вход палаты общин и обеспечивает параметризованный вход:
<час>
logger.debug("The entry is {}.", entry);
//which expands effectively to
if (logger.isDebugEnabled()){
    // Note that it's actually *more* efficient than this - see Huxi's comment below...
    logger.debug("The entry is " + entry + "."); 
}
  • Logback, потому что это является более новым, чем log4j и снова, поддерживает параметризованный вход, поскольку это реализует SLF4j непосредственно
  • SLF4j/Logback, потому что это записано тем же парнем, который сделал log4j, таким образом, он сделал его лучше (согласно Ken G - спасибо. Это, кажется, соответствует при рассмотрении их более ранние сообщения новостей )
  • SLF4j, потому что они также публикуют log4j адаптер, таким образом, Вы не должны "выключать" log4j в более старом коде - просто заставляют log4j.properties использовать SLF4j, и это - конфигурация
86
ответ дан Community 5 November 2019 в 09:11
поделиться

См. также ответы на вопрос , Что лучшие практики должны зарегистрировать ошибку? , особенно:

  • существует некоторый потенциал classloading проблемы с Входом палаты общин.

  • Log4J и SLF4J были разработаны тем же человеком, извлекая уроки из проблем, найденных на практике с Log4J.

17
ответ дан Community 5 November 2019 в 09:11
поделиться

Я нахожу, что входящий в систему Java сбивает с толку, непоследователен, плохо зарегистрированный и особенно случаен. Кроме того, существует огромная сумма подобия между этими платформами журналирования, приводящими к дублированию усилия и беспорядку относительно того, в каком входе среды Вы находитесь на самом деле. В частности, если Вы работаете в серьезной стопке веб-приложения Java, Вы часто находитесь в приблизительно регистрирующиеся среды когда-то; (например, будьте в спящем режиме, может использовать log4j и кота java.util.logging). Свободное городское население Apache предназначено для образования моста различных платформ журналирования, но действительно просто добавляет больше сложности. Если Вы не знаете это заранее, это является совершенно озадачивающим. Почему мои сообщения журнала не распечатывают к консоли и т.д.? Ohh, потому что я смотрю на журналы Tomcat, и не log4j. Добавляя еще один слой сложности, сервер приложений может иметь глобальные конфигурации входа, которые не могут распознать локальные конфигурации для конкретного веб-приложения. Наконец, все эти платформы журналирования являются СЛИШКОМ СЛОЖНЫМИ. Входя в систему Java был неорганизованным отъездом путаницы разработчики как я разбитый и запутанный.

Ранние версии Java не имели встроенного продвижения платформы журналирования к этому сценарию.

36
ответ дан Julien Chastang 5 November 2019 в 09:11
поделиться

В нашем проекте компании мы используем LOG4j, и это очень просто в использовании как Stephen, показал в его примере. Мы также записали наши собственные классы шаблона для LOG4j, таким образом, можно создать собственные схемы выходного файла. Можно описать, как файл журнала должен быть похожим. Возможно улучшить исходные log4j классы.

свойства All LOG4j можно измениться в log4j.properties файле, таким образом, можно использовать различные файлы для различных проектов.

вход Java не является моим фаворитом, но это могло быть то, потому что я использую log4j с начала.

4
ответ дан Markus Lausberg 5 November 2019 в 09:11
поделиться

Эти палата общин, Регистрирующая обзор , приводит причину для ее существования: регистрация из кодекса библиотеки, когда Вы не имеете никакого контроля над базовой платформой журналирования. Очень важный для различных апачских проектов, которые будут связаны во внешние заявления. Возможно, не настолько важный для внутренних проектов IT, где Вы имеете полный контроль.

Тем не менее я пишу Регистрации палаты общин, также, как и многие из других разработчиков, которых я знаю. Причина состоит в том, чтобы минимизировать умственный багаж: Вы можете изменить проекты или рабочие места, и не иметь, чтобы учиться, новая структура (обеспечил, новая работа/проект также использует CL, и/или Вы можете убедить их двигаться в него).

кроме того, есть некоторая стоимость к созданию Ваших собственных оберток вокруг любой структуры, которую Вы используете. Как описано здесь , мне нравится использовать объект LogWrapper обеспечить обычай stringification (важный), и минимизировать визуальный беспорядок регистрирующихся (менее важных) отчетов.

4
ответ дан kdgregory 5 November 2019 в 09:11
поделиться

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

0
ответ дан tsimon 5 November 2019 в 09:11
поделиться

Обычно я принимал бы значение по умолчанию к использованию Log4J.

я использовал бы Вход Java, если бы я не возражал против зависимости от Java 1.4, но я все еще использовал бы Log4J в предпочтении.

я использовал бы Вход палаты общин, если бы я улучшал что-то, что уже использовало его.

2
ответ дан Michael Rutherfurd 5 November 2019 в 09:11
поделиться

Есть один важный момент, о котором не упоминалось ранее:

SLF4J (и Logback, и LOG4J в качестве серверной части регистрации) поддерживают так называемый сопоставленный диагностический контекст (MDC, см. javadoc и документация ).

По сути, это локальная для потока карта , которую вы можете использовать для добавления дополнительной контекстной информации к вашему событию регистрации. Текущее состояние MDC привязано к каждому событию.

Это может быть невероятно полезно, если вы поместите в него такие вещи, как имя пользователя и URL-адрес запроса (в случае веб-приложения). Это можно сделать автоматически, например, с помощью фильтра.

22
ответ дан 24 November 2019 в 02:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: