Рубрики
Uncategorized

Начните быстро с журналом Python

Поднявшись от предыдущих средств ведения журнала о том, как начать регистрацию с C # и Java, сегодня W … Tagged с ведением ведения журнала, программированием, кодировкой, DEVOPS.

Поднявшись от предыдущих страховых статей о том, как получить начал лесозаготовки с C # и Java Сегодня мы посмотрим, как встать и быстро работать с журналом Python.

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

  • Настройка модуля ведения журнала.
  • Что в систему и почему.
  • Последствия безопасности регистрации.

И так, чего же ты ждешь? Продолжайте читать, и давайте настроим простой проект, чтобы начать работу.

Самая простая регистрация Python, что Может работать

Для этой демонстрации я собираюсь использовать бесплатное издание сообщества Jetbrain’s Pycharm IDe Отказ Если вы не использовали его раньше, продолжайте и скачать Это и получить его установленным. Как только у вас установлен Pycharm, откройте его.

На экране «Добро пожаловать» нажмите «Создать новый проект».

На следующем экране нам нужно будет установить несколько вариантов. Во-первых, установите местоположение. Он должен по умолчанию для размещения проекта Pycharm. Вы можете назвать проект все, что вы хотите. Я звоню моим «быстрым питоном». Разверните раздел под опцией «местоположение», и вы увидите варианты, связанные с виртуальной средой Python и интерпретатору. Если это не настроен для Python3, обратитесь к этому Руководство , что выберут вас и бегут.

После того, как у вас есть все эти параметры, продолжайте и нажмите «Создать».

Pycharm создаст для нас новую виртуальную среду, а через минуту или два у нас будет пустой проект Python Project для нас, чтобы начать запись кода. Давайте создадим новый файл Python, щелкнув правой кнопкой мыши на имя проекта и выбирая «новый файл Python» из «Нового» выпадающего подменю.

Назовите это main.py.

Продолжайте и обновите наш новый файл Main.py со следующим кодом:

if __name__ == "__main__":
    print("Hello, Python!")

Теперь давайте просто проверим, что ваш интерпретатор устанавливается правильно. Перейти к Беги > Беги «Главный» или использовать ярлык Сдвиг + F10 (Windows и Linux) или Контроль + R (Mac). Если все настроено правильно, Pycharm приведет к окну вывода запуска, где мы увидим наше сообщение. Это должно выглядеть так:

Хотя мы можем использовать оператор печати для отображения сообщений к консоли — и кто этого не сделал, чтобы отладить проблему? — Это не идеальный способ для нас для обработки регистрации в любом приложении. Регистрация приложений — это больше, чем просто печатные сообщения на экран.

Что такое регистрация приложений?

Так что же именно происходит регистрация приложений? Ну, если бы вы прочитали C # Регистрация пост , вы будете знать, что определение регистрации приложений, приведенное в этой статье

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

Концептуально, мы хотим войти в систему, что может дать нам представление о поведении приложения, пока он работает. Мы также сохраним эти сообщения на более поздние рассмотрение и анализ.

Какая мотивация для регистрации? Зачем беспокоиться?

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

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

Видите, во многих этих ситуациях организации не имели правильных приборов или регистрации. Приложение действительно хорошо? Это проходило через тесты приема качества обеспечения качества, но являются те ХОРОШО? Они достаточно хороши? Существует ли какой-то неизвестный фактор, который может привести к тому, что это приложение оказывает неудачу в призрачном моменте в добыче в добыче?

Правильно регистрация вашего приложения может ответить на все эти вопросы и многое другое. Регистрация может предоставить нам информацию о здоровье приложения, и это может позволить нам

  • Реконструируйте то, что пошло не так с бизнес-процессом.
  • Обзор запросов и контекстная информация в случае нарушения безопасности.
  • Обеспечить данные для аналитики маркетинга.
  • Монитор для нарушений политики и правил.

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

Что вы должны (и не должны!) Бревно

Есть много вещей, которые мы можем ввести в файл журнала, но есть некоторые элементы информации, которые мы никогда не должны, когда-либо включать в выходной журнал. Вы не должны регистрировать какие-либо форму чувствительных бизнес-данных или Лично идентифицируемая информация (PII) Отказ

Чувствительные бизнес-данные немного общего. Что такое и не чувствительна варьируется в зависимости от отрасли, но по крайней мере, вы не должны регистрировать следующее:

  • Номера счета
  • Номера кредитных карт (включая даты истечения срока годности и коды CVV)
  • Пароли
  • Идентификаторы сеанса
  • Ключи шифрования

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

  • Номера социального страхования
  • Даты рождения
  • Полные имена
  • Адрес электронной почты
  • Номера водительских лицензий

Короче говоря, обратитесь к своим журналам, как будто они будут публичными. Данные журнала — отличный источник информации для злоумышленника на эксплуатацию. Открыть проект безопасности веб-приложения (OWASP) имеет отличный чит-лист на ведение журнала Это определенно будет стоить прочитать для получения дополнительной информации.

Введите рамку регистрации Python

Давайте вернемся к некоторому коду. Это не секрет, который Python имеет довольно обширную стандартную библиотеку. Python Регистрация Модуль — это очень способная структура регистрации, поэтому давайте интегрируем это в наше приложение.

Перейдите вперед и измените свой Main.py, чтобы импортировать библиотеку журналов и добавить пару сообщений журнала в наше приложение.

import logging

if __name__ == "__main__":
    logging.warning("I'm a warning!")
    logging.info("Hello, Python!")
    logging.debug("I'm a debug message!")

Теперь, если вы запустите это, вы можете увидеть что-то неожиданное.

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

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

Настройка регистратора

Модуль ведения журнала Python разбивается на четыре разных абстракции: логики , обработчики , Фильтры и Форматтеры Отказ

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

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

Редактирование кода

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

import logging

logging.basicConfig(filename='demo.log')

if __name__ == "__main__":
    logging.warning("I'm a warning!")
    logging.info("Hello, Python!")
    logging.debug("I'm a debug message!")

Запустите это, и вы увидите, что файл с именем Demo.log создан в вашем каталоге проекта. Откройте это, и вы обнаружите, что он содержит следующее:

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

Перейдите на свой Main.py и обновите конфигурацию:

import logging

logging.basicConfig(filename='demo.log', level=logging.DEBUG)

if __name__ == "__main__":
    logging.warning("I'm a warning!")
    logging.info("Hello, Python!")
    logging.debug("I'm a debug message!")

Теперь запустите приложение. Вы увидите остальные наши сообщения в файле.

Итак, что же нам делать? Структуры лесозаготовки разбивают тип сообщений, зарегистрированных в разные категории или уровни серьезности. Фактическая поломка может отличаться на основе рамок ведения журнала. Python использует следующие уровни приоритетов, начиная с наивысшего приоритета:

  • Критический
  • Ошибка
  • Предупреждение
  • Информация
  • Отлаживать
  • Не задано

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

Форматирование наших сообщений

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

Добавьте следующее на свой Main.py:

import logging

logging.basicConfig(filename='demo.log',
                    level=logging.DEBUG,
                    format='%(asctime)s - %(name)s - %(threadName)s -  %(levelname)s - %(message)s')

if __name__ == "__main__":
    logging.warning("I'm a warning!")   
    logging.info("Hello, Python!")
    logging.debug("I'm a debug message!")

Теперь запустите приложение снова и откройте файл DEMO.LOG.

Теперь мы получаем где-то. Наш маленький регистратор гораздо полезнее. Так что происходит с этим утверждением формата? Вот информационное сообщение из нашего файла журнала:

2018-01-27 12:54:48,312 - root - MainThread - INFO - Hello, Python!

Давайте сломаемся.

Первое, что мы журнал, — это отметку времени через переменную Asctime Python. Это такое время, соответствующее ISO8601.

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

MainHead — это имя текущего потока. Это очень полезно при входе в мульти-резьбовое приложение.

Это уровень регистрации сообщения.

Наконец, у нас есть сам сообщение.

Что теперь?

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

Существует гораздо больше вариантов, которые можно использовать для настройки регистратора, обработчиков и форматиров. Я рекомендую вам поэкспериментировать и посмотреть, что лучше всего работает для вашего конкретного приложения. Документация Python имеет много информации о Модуль лесозаготовок , а также Базовый и Продвинутый Руководство по величине.

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

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

Этот пост был написан Кейси Данхэм . Кейси, который недавно запустил свой собственный бизнес-бизнес, известен своими уникальными подходами к всем направлениям безопасности приложений, вытекает из своей 10-летней карьеры в качестве профессионального разработчика программного обеспечения. Его сильные стороны включают в себя безопасные консалтинг развития SDLC; моделирование угроз; Обучение разработчикам; и аудит веб, мобильные и настольные приложения для недостатков безопасности.

Оригинал: «https://dev.to/scalyr/get-started-quickly-with-python-logging-1o7b»