Преимущество использования logging over print() для регистрации информации на Papertrail в приложении Django Heroku
У меня есть приложение Django, которое я размещаю на Heroku и подключаюсь к Papertrail с помощью дополнения Papertrail Heroku. Есть множество мест, где я напрямую записываю информацию в Papertrail, в настоящее время:
logger = logging.getLogger('papertrail')
logger.info('important text')
Я настроил конфигурацию регистрации по этой ссылке:
import sys
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'stream': sys.stdout,
},
},
'loggers': {
'django': {
'handlers': ['console'],
'level': 'ERROR',
},
'papertrail': {
'handlers': ['console'],
'level': 'INFO',
},
},
}
Вместе это записывается в Papertrail примерно так:
Feb 07 06:10:56 app_name app/worker.1: important text
Тем не менее, я заметил, что с помощью print('important text')
выполняет то же самое здесь. Есть ли польза для продолжения использования logging
над print
войти "важный текст" в этой ситуации? Я прочитал эту статью и, похоже, ничего из этого не применимо.
1 ответ
Я иногда задаю этот вопрос, и я обычно делаю вывод, что print
полезен для отладки, но регистрация более мощная для всего остального.
Например, ведение журнала имеет уровни журнала, которые показывают серьезность. А также ведение журнала позволяет записывать в файлы логи и вывод ошибок, и т. Д.
По этим и другим причинам любое производственное приложение должно иметь комплексную систему регистрации.
Прочитайте это, и это должно стать яснее:
https://docs.djangoproject.com/en/1.10/topics/logging/
Если вы не уверены в этом ответе и цитируемой вами статье, я бы порекомендовал провести дополнительное исследование. В противном случае продолжайте использовать print
и, может быть, вы в конце концов убедите себя.