Альтернативное решение:
reduce(lambda x,y : filter(lambda z: z!=y,x) ,[2,3,5,8],[1,2,6,8])
В хронологическом порядке появления API (насколько я знаю):
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 + ".");
}
См. также ответы на вопрос , Что лучшие практики должны зарегистрировать ошибку? , особенно:
существует некоторый потенциал classloading проблемы с Входом палаты общин.
Log4J и SLF4J были разработаны тем же человеком, извлекая уроки из проблем, найденных на практике с Log4J.
Я нахожу, что входящий в систему Java сбивает с толку, непоследователен, плохо зарегистрированный и особенно случаен. Кроме того, существует огромная сумма подобия между этими платформами журналирования, приводящими к дублированию усилия и беспорядку относительно того, в каком входе среды Вы находитесь на самом деле. В частности, если Вы работаете в серьезной стопке веб-приложения Java, Вы часто находитесь в приблизительно регистрирующиеся среды когда-то; (например, будьте в спящем режиме, может использовать log4j и кота java.util.logging). Свободное городское население Apache предназначено для образования моста различных платформ журналирования, но действительно просто добавляет больше сложности. Если Вы не знаете это заранее, это является совершенно озадачивающим. Почему мои сообщения журнала не распечатывают к консоли и т.д.? Ohh, потому что я смотрю на журналы Tomcat, и не log4j. Добавляя еще один слой сложности, сервер приложений может иметь глобальные конфигурации входа, которые не могут распознать локальные конфигурации для конкретного веб-приложения. Наконец, все эти платформы журналирования являются СЛИШКОМ СЛОЖНЫМИ. Входя в систему Java был неорганизованным отъездом путаницы разработчики как я разбитый и запутанный.
Ранние версии Java не имели встроенного продвижения платформы журналирования к этому сценарию.
В нашем проекте компании мы используем LOG4j, и это очень просто в использовании как Stephen, показал в его примере. Мы также записали наши собственные классы шаблона для LOG4j, таким образом, можно создать собственные схемы выходного файла. Можно описать, как файл журнала должен быть похожим. Возможно улучшить исходные log4j классы.
свойства All LOG4j можно измениться в log4j.properties файле, таким образом, можно использовать различные файлы для различных проектов.
вход Java не является моим фаворитом, но это могло быть то, потому что я использую log4j с начала.
Эти палата общин, Регистрирующая обзор , приводит причину для ее существования: регистрация из кодекса библиотеки, когда Вы не имеете никакого контроля над базовой платформой журналирования. Очень важный для различных апачских проектов, которые будут связаны во внешние заявления. Возможно, не настолько важный для внутренних проектов IT, где Вы имеете полный контроль.
Тем не менее я пишу Регистрации палаты общин, также, как и многие из других разработчиков, которых я знаю. Причина состоит в том, чтобы минимизировать умственный багаж: Вы можете изменить проекты или рабочие места, и не иметь, чтобы учиться, новая структура (обеспечил, новая работа/проект также использует CL, и/или Вы можете убедить их двигаться в него).
кроме того, есть некоторая стоимость к созданию Ваших собственных оберток вокруг любой структуры, которую Вы используете. Как описано здесь , мне нравится использовать объект LogWrapper обеспечить обычай stringification (важный), и минимизировать визуальный беспорядок регистрирующихся (менее важных) отчетов.
Я предложил бы создать тонкий фасад входа, который может записать в любую из платформ журналирования, в которой точке выбор отступающего механизма становятся в значительной степени спорным вопросом.
Обычно я принимал бы значение по умолчанию к использованию Log4J.
я использовал бы Вход Java, если бы я не возражал против зависимости от Java 1.4, но я все еще использовал бы Log4J в предпочтении.
я использовал бы Вход палаты общин, если бы я улучшал что-то, что уже использовало его.
Есть один важный момент, о котором не упоминалось ранее:
SLF4J (и Logback, и LOG4J в качестве серверной части регистрации) поддерживают так называемый сопоставленный диагностический контекст (MDC, см. javadoc и документация ).
По сути, это локальная для потока карта
Это может быть невероятно полезно, если вы поместите в него такие вещи, как имя пользователя и URL-адрес запроса (в случае веб-приложения). Это можно сделать автоматически, например, с помощью фильтра.