Подтвердить что ты не робот

В python, зачем использовать журналирование вместо печати?

Для простой отладки в сложном проекте есть ли причина использовать регистратор python вместо печати? Как насчет других прецедентов? Есть ли приемлемый прецедент для каждого из них (особенно если вы ищете только stdout)?

Я всегда слышал, что это "лучшая практика", но я не смог понять, почему.

4b9b3361

Ответ 1

Пакет регистрации содержит множество полезных функций:

  • Легко видеть, где и когда (даже номер строки), из которого выполняется ведение журнала.
  • Вы можете входить в файлы, сокеты, что угодно, все в одно и то же время.
  • Вы можете различать ведение журнала в зависимости от серьезности.

В печати нет ни одного из них.

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

Ответ 2

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

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

Ответ 3

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

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

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

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

Если вы считаете, что утверждение печати может быть проще, чем использование pdb (как это часто бывает), вы обнаружите, что использование логгера приводит к тому, что ваша программа намного проще работать над состоянием, чем если вы используете и позже удалить утверждения печати. ​​

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

Ответ 4

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