2016-06-24 1 views
0

Мне нужно регистрировать активность пользователей, подключенных к моему серверу, следует ли использовать log4j? Или log4j полезен только на этапе разработки?Инструменты ведения журнала, такие как log4j, полезны только на этапе разработки?

+0

FYI, вместо того, чтобы быть заблокированным в одной конкретной системе ведения журнала, вы можете использовать фасад журнала '' SLF4J' (http://www.slf4j.org). Ваш код вызывает методы интерфейса SLF4J, которые, в свою очередь, вызывают структуру ведения журнала по вашему выбору. Работает с ['LogBack'] (http://logback.qos.ch), Log4j, системным протоколированием по умолчанию для Java и Android и т. Д. –

+0

SLF4J блокирует вас в прошлом, хотя. Его API поддерживает только протоколирование строк, а не объектов. Это также создает больше мусора, чем необходимо. Чтобы получить все преимущества предстоящих функций Log4j 2, таких как двоичный журнал, я рекомендую использовать API Log4j 2 в ваших приложениях. Если вы передумали, есть адаптер log4j-to-slf4j, поэтому вы не будете заблокированы. Раскрытие информации: Я - коммиттер Log4j 2. –

ответ

3

Они на самом деле не особенно полезны в процессе разработки, System.out.println не очень хорошо для большинства Дева протоколирования отладки, но после развертывания следующих возможностей стать действительно полезными:

  • рулона логов, чтобы они не слишком большим что обеспечивают бесперебойную необслуживаемую работу
  • добавить время/даты, чтобы вы могли смотреть журналы в течение определенного периода времени.
  • Изменить многословие «на лету» (вы не всегда хотите получать информацию о трассировке или отладке, но можете включить ее, когда система isn ' t работает хорошо может быть спасателем)
  • Повторно маршрутизировать лог-файлы в более доступное место ... Log4j может отправлять ваши журналы в различные базы данных или в другие местоположения, когда вы не можете реально достичь своего сервера напрямую.

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

Итак, да, это полезно после разработки.

редактировать (в ответ на комментарий вопрос) -

Просто в качестве примера. Приложение, над которым я работаю, теперь имеет 20ish log. Один из них - «Производительность», он регистрирует входящие данные, включая тайминги - иногда более одной строки в секунду. Этот лог-файл «Rolls» в 10 мб (примерно час), но мы используем его для поиска задержек в нашей доставке данных. Мы даже используем другое программное обеспечение для анализа этого журнала иногда, чтобы искать шаблоны в синхронизации данных.

У нас есть отдельный журнал ошибок, который регистрирует всю активность на уровне ошибок. Этот журнал не работает так быстро, что мы теряем данные, когда получаем кучу других данных журнала.

Существует еще один журнал поставить проблемы, связанные с Hibernate/SQL и один для проблем, связанных с нашей очередью сообщений и один для нашего кэша между приложением ....

Они все также объединены в «основные msgstr "войти в конфигурационный файл log4j. Мы можем перенастроить любой журнал на другой уровень (например, у нас были проблемы с аутентификацией с источником данных, поэтому мы обнаружили уровень отладки в этом источнике, чтобы узнать, что изменилось в среде нашего сервера, чтобы вызвать это)

Несмотря на то, что некоторые из журналов прокручивают 10 мб за час (наш максимальный размер файла). Log4j перевернет их в файлы .1 и .2, чтобы мы могли сохранить 10-50 из них в зависимости от необходимости.

Все это делается через конфигурационные файлы и может быть изменено после развертывания без восстановления системы.

Edit 2 - еще одна мысль

Еще один полезный пункт об использовании log4j и интерфейс Java протоколирования является то, что библиотеки Hibernate с помощью его можно настроить с помощью XML-файлов без восстановления.

Без логических протоколов Log4j/java вы должны либо A) иметь пользовательский API для управления журналами, B) иметь только регистрацию по умолчанию, либо C) не иметь журнала из этой подсистемы. Поскольку Hibernate использует API Java, однако вы можете установить уровень журнала для информации журнала «Hibernate» в стандартном, документированном файле конфигурации xml и даже перенаправить свои журналы в базу данных или другое устройство регистрации.

+0

Можете ли вы сказать, как точно помогают уровни регистрации? Я имею в виду даже с разными уровнями ведения журнала, в конце концов, я увижу его как один большой файл журнала, не так ли? – Tejas

+0

При нормальной работе вы хотите видеть только основные моменты - ошибки/исключения и некоторые события обработки высокого уровня (информация). Когда у вас возникают проблемы, вы можете изменить уровень журнала (через приложение или отредактировать файл конфигурации) и получить любую информацию, подобную (из моих приведенных выше примеров), в каком направлении было отправлено «если» или какие параметры были переданы в каждый метод. Обычно они слишком быстро прокручивали важную информацию из файла. –

+0

Предположим, что регистратор был установлен с «Warn» в файле конфигурации, и я регистрировался с уровнем «Информация». Теперь я смогу увидеть предыдущие журналы «info» после того, как я изменил конфигурационный файл на «Info»? – Tejas

0
  1. да (или любой другой протоколирование рамка/SLF4J)
  2. нет
1

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

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

Это нормально использовать log4j, потому что это самая распространенная библиотека для Java. Однако я лично считаю его конфигурацию немного неинтуитивной.

+0

Конфигурация Log4j 1.2 была громоздкой и неинтуитивной, но в Log4j 2 это значительно улучшилось. –

1

Другая причина использования регистраторов, таких как Log4j, заключается в том, чтобы разрешать различные уровни ведения журнала для разных компонентов. Журналы могут стать довольно большими и беспорядочными, если вы включите DEBUG для всего. Если вы знаете, в какой области кода вы хотите «увеличить» в своих журналах, вы можете взломать регистрацию только для этой области.