Привет! Как поставщик Filtering Flask, я сталкивался с изрядной долей проблем, связанных с обработкой сообщений об ошибках в приложениях Flask. В этом блоге я расскажу вам, как фильтровать надоедливые сообщения об ошибках Flask, чтобы вам было легче разрабатывать и развертывать приложения.
Зачем фильтровать сообщения об ошибках Flask?
Прежде всего, давайте поговорим о том, почему вам вообще нужно фильтровать сообщения об ошибках Flask. Когда вы разрабатываете приложение Flask, вы часто получаете кучу сообщений об ошибках. Некоторые из них очень полезны для отладки, например, когда вы пытаетесь выяснить, почему определенная функция не работает. Но другие могут быть просто шумом, особенно в производственной среде.
Например, у вас могут постоянно появляться безобидные предупреждения или сообщения об ошибках, содержащие конфиденциальную информацию. Фильтрация этих сообщений может помочь вам сосредоточиться на реальных проблемах, а также защитить безопасность вашего приложения.
Понимание сообщений об ошибках Flask
Прежде чем вы сможете начать фильтрацию, вам необходимо понять, какие сообщения об ошибках генерирует Flask. Flask использует систему журналирования Python для обработки сообщений об ошибках. Существуют различные уровни ведения журнала, включая DEBUG, INFO, WARNING, ERROR и CRITICAL.
- ОТЛАЖИВАТЬ: это наиболее подробные сообщения, обычно используемые во время разработки для отслеживания ошибок.
- ИНФОРМАЦИЯ: Общая информация о работе приложения.
- ПРЕДУПРЕЖДЕНИЕ: Обозначает потенциальные проблемы, которые могут вызвать проблемы в будущем.
- ОШИБКА: Что-то пошло не так, но приложение продолжает работать.
- КРИТИЧЕСКИЙ: серьезная ошибка, которая может привести к прекращению работы приложения.
По умолчанию Flask регистрирует сообщения на уровне INFO в рабочей среде и на уровне DEBUG в разработке.
Базовая фильтрация с протоколированием
Самый простой способ отфильтровать сообщения об ошибках Flask — использовать модуль ведения журнала Python. Вы можете настроить уровень ведения журнала так, чтобы отображались только важные для вас сообщения.
import logging from flask import Flask app = Flask(__name__) # Установите уровень ведения журнала WARNING logging.basicConfig(level=logging.WARNING) @app.route('/') def hello_world(): return 'Hello, World!' если __name__ == '__main__': app.run()
В этом примере мы устанавливаем уровень ведения журнала ПРЕДУПРЕЖДЕНИЕ. Это означает, что будут регистрироваться только сообщения ПРЕДУПРЕЖДЕНИЕ, ОШИБКА и КРИТИЧЕСКИЕ. Сообщения DEBUG и INFO будут игнорироваться.
Пользовательские фильтры
Иногда вам может потребоваться более конкретная фильтрация. Вы можете создавать собственные фильтры, чтобы регистрировать только те сообщения, которые соответствуют определенным критериям.
импортировать журнал из flask import Flask app = Flask(__name__) class CustomFilter(logging.Filter): def filter(self, Record): # Регистрировать только те сообщения, которые содержат слово "важно", возвращать "важно" в Record.getMessage() # Создать средство ведения журнала и добавить пользовательский фильтр logger = logging.getLogger() custom_filter = CustomFilter() logger.addFilter(custom_filter) @app.route('/') def hello_world(): logger.info('Это неважное сообщение') logger.warning('Это важное предупреждение') return 'Hello, World!' если __name__ == '__main__': app.run()
В этом примере мы создали собственный фильтр, который позволяет регистрировать только сообщения, содержащие слово «важно». Таким образом, сообщение INFO не будет зарегистрировано, а сообщение WARNING будет зарегистрировано.
Фильтрация в производстве
В производственной среде вам следует быть особенно осторожным с сообщениями об ошибках. Вы не хотите раскрывать какую-либо конфиденциальную информацию, например пароли базы данных или ключи API.
Один из способов сделать это — использовать форматировщик журналов для маскировки конфиденциальной информации.
импортировать журналирование из flask import Flask app = Flask(__name__) class SensitiveInfoFilter(logging.Filter): def filter(self, Record): message = Record.getMessage() # Заменить конфиденциальную информацию звездочками Masked_message = message.replace('password', '****') Record.msg = Masked_message return True # Создать средство ведения журнала и добавить фильтр конфиденциальной информации logger = logging.getLogger() Sensitive_info_filter = SensitiveInfoFilter() logger.addFilter(sensitive_info_filter) @app.route('/') def hello_world(): logger.error('Пароль базы данных — пароль') return 'Hello, World!' если __name__ == '__main__': app.run()
В этом примере мы заменяем слово «пароль» звездочками во всех сообщениях об ошибках. Таким образом, если будет зарегистрировано сообщение об ошибке, конфиденциальная информация не будет раскрыта.
Использование сторонних инструментов
Существуют также сторонние инструменты, которые помогут вам фильтровать сообщения об ошибках Flask и управлять ими. Например, Sentry — популярный инструмент, который может собирать и группировать сообщения об ошибках, что упрощает анализ и устранение проблем.
Чтобы использовать Sentry с Flask, сначала необходимо установитьчасовой - сдкупаковка:
pip install Sentry-SDK [колба]
Затем вы можете интегрировать его в свое приложение Flask:
import sendry_sdk из sendry_sdk.integrations.flask import FlaskIntegration из flask import Flask sendry_sdk.init( dsn="YOUR_DSN_HERE", Integrations=[FlaskIntegration()] ) app = Flask(__name__) @app.route('/') def hello_world(): поднять ValueError('Это ошибка теста') return 'Привет, Мир!» если __name__ == '__main__': app.run()
Sentry будет фиксировать сообщения об ошибках и отправлять их на свою панель управления, где вы сможете просматривать их и управлять ими.


Наши фильтрующие колбы
Как поставщик фильтрующих колб мы предлагаем широкий выбор высококачественных фильтрующих колб для ваших лабораторных нужд. Ознакомьтесь с нашимЛабораторные фильтрующие колбы из прозрачного стекла с верхней трубкойиЛабораторные стеклянные колбы Эрленмейера конической формы с верхней трубкой. Эти колбы изготовлены из прочного стекла и предназначены для обеспечения эффективной фильтрации.
Заключение
Фильтрация сообщений об ошибках Flask — важная часть разработки и поддержки приложения Flask. Независимо от того, используете ли вы базовые фильтры журналирования, пользовательские фильтры или сторонние инструменты, вы можете сделать свои сообщения об ошибках более управляемыми и безопасными.
Если вы заинтересованы в наших фильтрующих колбах или у вас есть какие-либо вопросы о фильтрации сообщений об ошибках Flask, свяжитесь с нами для обсуждения закупок. Мы здесь, чтобы помочь вам найти лучшие решения для ваших нужд.
Ссылки
- Документация по ведению журнала Python
- Документация по колбе
- Документация Сторожевого
