[Python] Логирование в телеграм, или история о том, как я сделал питон библиотеку
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Модуль logging в питоне - это мощный инструмент в разработки. Он помогает отследить ошибки, наблюдать за работой приложения и даже собирать статистику об использовании вашего сервиса. В этой статье я расскажу, как можно расширить возможности этого модуля и причем тут телеграмм.
IntroДавным-давно, а точнее несколько месяцев назад, накануне Нового года, я сидел дома и решал задачу по машинному обучению. Связана она была с нейронными сетями и классификацией текстов, поэтому я естественно пользовался бесплатным GPU от гугла (colab). За окном шел снег, а модели обучались ну уж очень долго. Обучать модель оставалось всего несколько минут, как вдруг появляется уведомление, что подключение к runtime потеряно, а это значит, что обученную модель и сабмиты из этого runtime скачать я не смогу, и все придется начинать заново.
Данная ситуация меня расстроила и заставила задуматься от том, что надо как-то через код сохранять файлы, потому что процесс выполнения кода не прекращается, когда возникает такая ошибка. Почему-то я сразу подумал про телеграм ботов и, написав несколько функций, смог сохранять самбиты и промежуточную информацию о том, как обучается модель и сколько ей осталось.
Копировал я этот код из ноутбука (jupyter notebook) в ноутбук, а потом осознал, что это можно встроить в модуль logging и завернуть в библиотеку, чтобы не таскать каждый раз большие куски кода, а использовать всего пару строк. Logging.handlersПонятно было, что за основу надо взять модуль для логирования, встроенный в питон. Очевидно, потому что изобретать свой велосипед мне не хотелось, а еще потому что, для использования в приложениях пришлось бы переписывать весь код логирования. Надо было найти способ перехватывать логи, и пересылать их в телеграмм. К счастью, в logging есть такой класс, как StreamHandler. Не буду вдаваться в подробности, но с помощью него можно сделать свою функцию, которая будет запускаться для каждой новой строки в логах и отправлять ее в телеграмм.Tg-loggerИ вот, держа в голове все вышеописанные идеи, я отправился писать свою библиотеку. Вот, что получилось.Для тех, кому лень запускать код, но хочется понять, как это будет работать, я сделал бота @tg_logger_demo_bot.
Чтобы воспользоваться библиотекой нужно:
- создать телеграмм бота (как это сделать описано здесь)
- получить свой user_id (это можно сделать через @tg_logger_demo_bot с помощью команды /id)
Установим библиотеку через pip.
pip install tg-logger
Рассмотрим код примера
import logging
import tg_logger
# Telegram data
token = "1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
users = [1111111111]
# Base logger
logger = logging.getLogger('foo')
logger.setLevel(logging.INFO)
# Logging bridge setup
tg_logger.setup(logger, token=token, users=users)
# Test
logger.info("Hello from tg_logger by otter18")
Особо интересна для нас строка, в которой подключается логирование в телеграмм.
# Logging bridge setup
tg_logger.setup(logger, token=token, users=users)
В функцию setup() нужно просто передать тот logger, к которому вы хотите подключить мост. Если заглянуть в документацию, то можно посмотреть на другие параметры функции setup(). С помощью них можно, в частности, настроить формат, в котором логи будут отправлены.
Outro
- Весь исходный код есть на гитхабе: github.com/otter18/tg_logger.
- Документация на английском есть на Read the Docs.
- Библиотека доступна для скачивания через pip: pypi.org/project/tg-logger/.
===========
Источник:
habr.com
===========
Похожие новости:
- [Python, Прототипирование, Интернет-маркетинг, Natural Language Processing] Как сделать интеллектуального чат-бота для проведения опросов/интервью
- [Python, Учебный процесс в IT, Карьера в IT-индустрии] Джуном? в 40-к лет? Ещё и на удаленку? Да ну, не выдумывайте…
- [Мессенджеры, Социальные сети и сообщества, Финансы в IT, IT-компании] Павел Дуров признался, что Telegram успешно собрал $1 млрд
- [Программирование, IT-инфраструктура, Серверная оптимизация, Лайфхаки для гиков] Уход от проблемы TTL или Стратегии корректного и быстрого кэширования (перевод)
- [Прототипирование, Визуальное программирование] No-code в действии — мастерим временный email-адрес
- [Венчурные инвестиции, Развитие стартапа, Финансы в IT, IT-компании] Новости IT и инвестиций: Apple предустановит Яндекс и Mail.Ru, государство хочет следить за машинами
- [Контент-маркетинг, Развитие стартапа] The true cost of free labour — and how startup founders can find their way around it
- [Python, Машинное обучение, Data Engineering] Как обойти капчу Гугл
- [Поисковые технологии, Big Data, DevOps, Искусственный интеллект] Ещё один поиск Вк по фото
- [Мессенджеры, Социальные сети и сообщества, Звук] Вышел новый Telegram 7.6 с голосовыми чатами-аналогами Clubhouse
Теги для поиска: #_python, #_python3, #_logging, #_telegram, #_library, #_handler, #_logger, #_python
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 12:55
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Модуль logging в питоне - это мощный инструмент в разработки. Он помогает отследить ошибки, наблюдать за работой приложения и даже собирать статистику об использовании вашего сервиса. В этой статье я расскажу, как можно расширить возможности этого модуля и причем тут телеграмм. IntroДавным-давно, а точнее несколько месяцев назад, накануне Нового года, я сидел дома и решал задачу по машинному обучению. Связана она была с нейронными сетями и классификацией текстов, поэтому я естественно пользовался бесплатным GPU от гугла (colab). За окном шел снег, а модели обучались ну уж очень долго. Обучать модель оставалось всего несколько минут, как вдруг появляется уведомление, что подключение к runtime потеряно, а это значит, что обученную модель и сабмиты из этого runtime скачать я не смогу, и все придется начинать заново. Данная ситуация меня расстроила и заставила задуматься от том, что надо как-то через код сохранять файлы, потому что процесс выполнения кода не прекращается, когда возникает такая ошибка. Почему-то я сразу подумал про телеграм ботов и, написав несколько функций, смог сохранять самбиты и промежуточную информацию о том, как обучается модель и сколько ей осталось. Копировал я этот код из ноутбука (jupyter notebook) в ноутбук, а потом осознал, что это можно встроить в модуль logging и завернуть в библиотеку, чтобы не таскать каждый раз большие куски кода, а использовать всего пару строк. Logging.handlersПонятно было, что за основу надо взять модуль для логирования, встроенный в питон. Очевидно, потому что изобретать свой велосипед мне не хотелось, а еще потому что, для использования в приложениях пришлось бы переписывать весь код логирования. Надо было найти способ перехватывать логи, и пересылать их в телеграмм. К счастью, в logging есть такой класс, как StreamHandler. Не буду вдаваться в подробности, но с помощью него можно сделать свою функцию, которая будет запускаться для каждой новой строки в логах и отправлять ее в телеграмм.Tg-loggerИ вот, держа в голове все вышеописанные идеи, я отправился писать свою библиотеку. Вот, что получилось.Для тех, кому лень запускать код, но хочется понять, как это будет работать, я сделал бота @tg_logger_demo_bot. Чтобы воспользоваться библиотекой нужно:
pip install tg-logger
import logging
import tg_logger # Telegram data token = "1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" users = [1111111111] # Base logger logger = logging.getLogger('foo') logger.setLevel(logging.INFO) # Logging bridge setup tg_logger.setup(logger, token=token, users=users) # Test logger.info("Hello from tg_logger by otter18") # Logging bridge setup
tg_logger.setup(logger, token=token, users=users) Outro
=========== Источник: habr.com =========== Похожие новости:
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 12:55
Часовой пояс: UTC + 5