Преимущество log4j

Из чего преимущество log4j по набору System.out и System.err производить к файлу журнала?

11
задан BuZZ-dEE 22 January 2016 в 17:48
поделиться

6 ответов

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

Это очень важно, потому что разработчикам часто трудно предсказать, как изменятся потребности в регистрации после того, как их программное обеспечение будет запущено в производство. Операционные команды, управляющие этим ПО, могут нуждаться в менее подробных журналах, могут нуждаться в нескольких журналах, могут нуждаться в отправке этих журналов на несколько серверов, иногда могут нуждаться в очень подробных данных для устранения неполадок и т. д. И обычно операционные команды не могут убедить разработчика внести значительные изменения в код, если им нужно изменить способ ведения журналов. Это часто приводит к простою производства, трениям между операторами и разработчиками, а также к пустой трате времени.

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

Кроме того, поскольку Log4j является стандартом де-факто для протоколирования в Java, существует множество инструментов, которые могут делать классные вещи с Log4j, что позволяет вам и вашим операционным командам не изобретать велосипед.

Моя любимая функция - возможность легко писать аппендеры, отправляющие данные в нефайловые источники, такие как SYSLOG, Splunk и т.д., что позволяет легко интегрировать пользовательский логгинг вашего приложения в инструменты управления операциями, которые уже использует ваш ИТ-отдел.

13
ответ дан 3 December 2019 в 04:12
поделиться

Log4j предлагает возможность поворачивать файлы журналов в зависимости от размера и удалять их в зависимости от количества (logrotate), чтобы ваши серверы не заполняли свои диски. Лично я думаю, что это одна из наиболее ценных функций в Log4j.

Также Log4j популярен и понятен многим разработчикам. Последние три компании, в которых я работал, использовали Log4j в большинстве проектов.

1
ответ дан 3 December 2019 в 04:12
поделиться

Уровни, форматирование, логирование в несколько файлов... Фреймворк логирования (даже если это java.util.logging) действительно полезен, если есть вероятность, что что-то может пойти не так во время работы вашего кода.

1
ответ дан 3 December 2019 в 04:12
поделиться

На самом деле сегодня вам стоит заглянуть в фасад slf4j, поскольку он позволяет вам использовать {} -замесители для наиболее кратких утверждений. Затем вы можете использовать соответствующую структуру ведения журнала за slf4j для обработки фактической обработки ваших операторов журнала. Это может быть log4j или slf4j-simple, который просто распечатывает всю ИНФОРМАЦИЮ, ПРЕДУПРЕЖДЕНИЕ и ОШИБКУ, а все остальное отбрасывает.

Важное наблюдение, которое вам необходимо сделать, заключается в том, что ЗАПИСЬ операторов журнала выполняется, когда код написан, а РЕШЕНИЕ о том, что необходимо, делается при развертывании кода, что может происходить через годы после того, как код был написан и проверено. System.out.println требует, чтобы вы физически изменили свой код, чтобы избавиться от них, что недопустимо в жестком цикле запись-тест-развертывание. ЕСЛИ код изменяется, его необходимо протестировать повторно. С slf4j вы просто активируете тех, кого хотите видеть.

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

Эта статья, которую я написал, может показаться вам интересной. Целевая аудитория - это начинающие программисты на Java, и я намерен с самого начала дать им хорошие привычки. http://runjva.appspot.com/logging101/index.html

7
ответ дан 3 December 2019 в 04:12
поделиться

мои избранные (не все)

  • Возможность устанавливать параметры входа в конфигурацию без перекомпиляции
  • Возможность устанавливать способ записи журнала ( из текстового файла отправителю SMTP)
  • Возможность фильтрации по степени серьезности
1
ответ дан 3 December 2019 в 04:12
поделиться

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

1
ответ дан 3 December 2019 в 04:12
поделиться
Другие вопросы по тегам:

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