Логирование в телеграмм, или история о том, как я сделал питон библиотеку
Модуль 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.
Рассмотрим код примера
Особо интересна для нас строка, в которой подключается логирование в телеграмм.
В функцию setup() нужно просто передать тот logger, к которому вы хотите подключить мост. Если заглянуть в документацию, то можно посмотреть на другие параметры функции setup(). С помощью них можно, в частности, настроить формат, в котором логи будут отправлены.
Access-логи сайта для seo: автоматический анализ и отправка отчетов в Telegram
В данной статье описан пошаговый мануал по скачиванию логов с сервера, их объединении и парсинге с помощью Python, а также формирование необходимых отчетов с последующей отправкой в Telegram. Подробные комментарии приведены в коде соответствующих скриптов.
В предыдущей статье “Набор Python-скриптов для автоматизации seo задач” я уже затрагивал тему анализа access-логов сайта в целях seo-оптимизации. В данной статье не будет подробного описания, что такое логи и для чего их анализировать. В качестве теории приведу несколько ссылок на ресурсы, которые встречал за последнее время:
Данный подход будет полезен для изучения логов больших сайтов (от 1 млн. строк). Преимущества подхода: делаем свой бесплатный инструмент с кастомными отчетами.
Работа над логами будет проходить в несколько этапов:
- Скачивание отчетов и их разархивирование
- Обработка log-файлов, формирование csv для последующего анализа. Построение отчетов
- Настройка cron
- Отправка отчетов в Telegram (Отправка по команде. Отправка по расписанию)
Каждый этап вынесен в отдельный скрипт, который отрабатывает в установленное время на выделенном сервере по cron.
Логи анализируемого сайта в моем случае хранятся на выделенном сервере в виде gz архивов.
Подход по скачиванию файлов, представленный в данной части, индивидуален, и предназначен для работы конкретного анализируемого сайта. Однако, часть рассмотренных подходов поможет вам настроить получение файлов для вашего сайте.
Задача данного скрипта каждый день в 23:55 скачивать с сервера и разархивировать логи за последние 7 дней.
Следующим шагом будет предобработка получившихся лог-файлов, построение и сохранение отчетов. Предобработка файлов заключается в их склейке, парсинге нужных полей и сохранении в csv.
Важно отметить, что большая часть отчетов, например, отчет по посещаемым разделам, также формируется для конкретного сайта, поэтому не забываем перестроить отчет под анализируемый проект.
В результате работы данного скрипта получаем csv файл с распарсенными логами (в моем случае анализируемый файл получился 644 MB) и набор сохраненных отчетов, которые будем использовать в дальнейшем для отправки.
35 функций Telegram о которых Вы не знали
В этой подборке мы не станем объяснять Вам, что такое группы, супергруппы, каналы, боты и пр. Если данные определения все же нуждаются в разъяснениях, советуем вам сначала прочитать нашу статью для новичков Что такое Телеграмм (Telegram), зачем он мне и как им пользоваться? в которой мы очень подробно и по пунктам обо всем этом рассказывали. Данная подборка составлена для тех, кто уже достаточно хорошо ознакомился с базовым функционалом Telegram и теперь хочет выжать из его возможностей максимум.
ВАЖНОЕ ПРИМЕЧАНИЕ! Все инструкции по настройке приведены для мобильных клиентов под OS Android и iOS (за исключением нескольких специфичных функций, которые работают только на десктоп версиях мессенджера). Сначала будет идти инструкция для пользователей, которые русифицировали интерфейс своего Телеграм-клиента, а в скобах будет указана та же инструкция, только для оригинального, англоязычного интерфейса. Значок ☰ — соответствует кнопке меню, которая находится на главной странице мессенджера в левом верхнем углу. Значок ⋮ — соответствует кнопке меню, которая находится на страницах чтения переписок, групп, каналов и ботов в правом верхнем углу.
Итак:
ИНТЕРФЕЙС
— Русификация интерфейса
Тут все просто. Около года назад мы уже публиковали подробные пошаговые инструкции как это сделать. Вот они: Android, iOS, Windows, OSX.
— Возможность изменить тему оформления
☰ — Настройки — Тема — По умолчанию/Синяя/Темная
(☰ — Settings — Theme — Default/Blue/Dark)
— Возможность изменить фон чата
☰ — Настройки — Фон чата
(☰ — Settings — Chat Background)
— Изменение размера текста в сообщениях
☰ — Настройки — Сообщения, Размер текста сообщения
(☰ — Setting — Messages, Messages Text Size)
— Закрепить контакт — сделать так, чтобы он всегда был в самом верху вашего списка контактов.
длинный тап по контакту — Закрепить (Pin to top)
Функции для общения
— Звонки (Голосовой вызов)
Зайдите на страницу переписки с пользователем, затем ⋮ — Позвонить (Call)
— Голосовые сообщения
Зайдите в переписку с интересующим Вас контактом, нажмите за значок микрофона (Правый нижний угол экрана) и не отпускайте его до тех пор, пока не скажете то, что хотите отправить. Отпустив палец, сообщение автоматически отправится.
— Голосовые сообщения при подносе телефона к уху — еще один способ отправить голосовое сообщение
Поднесите телефон к уху, чтобы либо воспроизвести не прослушанные сообщения, либо дождитесь легкой вибрации и начни запись нового сообщения.
— Ответ на конкретное сообщение в чате
Тапните по нужному сообщению (двойной тап в iOS) и выберите Ответить (Reply)
— Форвард (перепост) сообщений из каналов и копирование ссылки на них — Вы можете пересылать интересные Вам сообщения своим друзьям, группы в которых состоите, в свои каналы и даже самому себе.
Зайдите в канал, нажмите на стрелочку справа от нужного сообщения ↗ и либо выберите контакт, которому хотите отправить сообщение, либо нажмите на надпись Копировать ссылку (Copy Link) , чтобы скопировать URL сообщения.
— Возможность сжимать трафик при звонках — особенно полезной эта функция будет для пользователей с ограниченным лимитом интернета на sim-карте или пользователей с медленным интернетом.
☰ — Настройки — Трафик и хранилище — Сжимать данные при звонках — Никогда/Только через мобильную сеть/Всегда
(☰ — Setting — Data and Storage — Use less data for calls — Never/Only on mobile data/Always)
— Возможность приглашать в Телеграм Ваших друзей через SMS
☰ — Контакты — скролл вниз, до контактов у которых не установлен Telegram — Тап по контакту — OK — Отправить
(☰ — Contacts — скролл вниз, до контактов у которых не установлен Telegram — Тап по контакту — OK — Send)
— Возможность приглашать в Телеграм Ваших друзей отправив письмо на e-mail или любое другое приложение поддерживающее отправку сообщений
☰ — Пригласить друзей — Выберите E-mail приложение или другой мессенджер — Введите или выберите контакт, которому хотите отправить приглашение — Отправить
(☰ — Invite Friends — Выберите E-mail приложение или другой мессенджер — Введите или выберите контакт, которому хотите отправить приглашение — Send)
— Индикатор информации о том прочитано ваше сообщение или нет — после отправки сообщения, в его правом нижнем углу появляется индикатор
⏰ — Часы — Сообщение не может отправиться (скорее всего что-то с вашим интернетом)
✓ — Одна галочка — сообщение отправлено, но не прочитано
✓✓ — Две галочки — сообщение доставлено и прочитано
— Секретный чат — на случай конфиденциальных переговоров. Сообщения в таком чате невозможно перехватить и прочитать для посторонних людей. Помимо этого, можно установить таймер, с помощью которого, через определенный промежуток времени после прочтения сообщения, они удалятся с обоих устройств без возможности восстановления. Если Вы сделаете скриншот в секретном чате, Ваш собеседник узнает об этом.
☰ — Создать секретный чат — Выбор контакта. Теперь, чтобы установить таймер ⋮ — Установить таймер самоуничтожения
(☰ — New Secret Chat — Выбор контакта. Теперь, чтобы установить таймер ⋮ — Set self-destruct timer)
Приватность и безопасность
— Запрет входящих звонков
☰ — Настройки — Приватность и безопасность — Звонки — Все/Мои контакты/Никто — Внизу есть возможность добавить исключения
(☰ — Setting — Privacy and Security — Calls — Everybody/My Contacts/Nobody — Внизу есть возможность добавить исключения)
— Двухфакторная аутентификация (для тех, кто переживает за безопасность своего аккаунта) — помимо проверочного кода, который придет по SMS, при входе в аккаунт надо будет вводить еще и пароль.
☰ — Настройки — Приватность и безопасность — Двухэтапная авторизация — Ввод пароля, который необходимо запомнить, и привязка e-mail на случай если память Вас все же подведет.
(☰ — Setting — Privacy and Security — Two-Step Verification — Ввод пароля, который необходимо запомнить, и привязка e-mail на случай если память Вас все же подведет.)
— Удаление аккаунта — Установка времени удаления вашего аккаунта в зависимости от того, когда вы в последний раз в него заходили
☰ — Настройки — Приватность и безопасность — Самоуничтожение аккаунта, Если вас не было — 1/3/6 месяцев или 1 год
(☰ — Setting — Privacy and Security — Account self-destructs, If you’re away for — 1/3/6 months or 1 year)
— Установка пароля на приложение — если Вашим телефоном будет пользоваться другой человек он не сможет войти в Телеграм пока не введет код разблокировки приложения
☰ — Настройки — Приватность и безопасность — Код доступа — переключатель вправо — ввод кода
(☰ — Setting — Privacy and Security — Passcode Lock — переключатель вправо — ввод кода)
— Скрыть от пользователей, когда Вы в последний раз были в сети (ото всех или конкретных пользователей). Отметим, что включив эту функцию Вы также перестанете видеть время последней активной сессии у тех, от кого скрыли свой статус онлайна.
☰ — Настройки — Приватность и безопасность — Последняя активность — Все/Мои контакты/Никто — Внизу есть возможность добавить исключения
(☰ — Setting — Privacy and Security — Last Seen — Everybody/My Contacts/Nobody — Внизу есть возможность добавить исключения)
— @юзернейм, вместо номера телефона — возможность скрыть от всех пользователей Телеграм (кроме тех, у кого уже есть Ваш номер в их телефонном списке контактов) номер телефона и получить красивый уникальный ник начинающийся с символа @ (этот ник можно оставлять в качестве своих контактных данных в Телеграм для других людей)
☰ — Настройки — Имя пользователя — ввод ника латиницей, без символа @ который добавится автоматически
(☰ — Setting — Username — ввод ника латиницей, без символа @ который добавится автоматически)
— Изменение имени и по желанию фамилии (не путать с @юзернейм) — Ваше родное(не обязательно) имя, на родном(тоже не обязательно) языке которое будет отображаться в группах.
☰ — Настройка — ⋮ — Изменить имя — Ввод имени
(☰ — Setting — ⋮ — Edit name — Ввод имени)
— Добавление аватара — с ним намного приятнее общаться в группах, а друзьям проще Вас найти в своих контактах.
☰ — Настройки — Значок фотоаппарата — С камеры/Из галереи
(☰ — Setting — Значок фотоаппарата — From camera/From gallery)
— Краткая информация о Вас (до 70 символов) — полезно тем, кто использует Телеграм для работы и деловой переписки, т.к. в этом поле можно указать должность или назначение аккаунта.
☰ — Настройки — Не заполнено — Заполните поле
(☰ — Setting — None — Заполните поле)
Медиафайлы, Заметки и Облачное хранилище
— Облачное хранилище — Облаком в Телеграм называется чат с самим собой. Этот чат доступен только Вам. В него Вы можете форватить (репостить) интересные и важные сообщения из различных каналов, писать заметки и прикреплять любые файлы до 1,5 Гб. Для удобной навигации по текстовым заметкам используйте #Хэштеги
Зайти в облако
☰ — ☁ (Значок с облаком, правее вашего номера телефона и имени)
Удобная навигация по загруженным фото и видео в облаке
☰ — ☁ — Там по вашему имени вверху экрана — Общие фото и видео (Shared Media)
— Стикеры
Чтобы сохранить к себе стикеры, которые Вам прислали и отправить их потом другим своим друзьям, просто нажмите на присланный стикер, а затем, в правом нижнем углу на надпись Добавить стикеры (Add Stickers) . Теперь, чтобы отправить их кому-нибудь, во время переписки нажмите на смайлик справа от окна для ввода сообщения, а затем на чуть завалившийся квадратный смайлик с синей точкой в верхнем ряду открывшегося меню. Если Вам никто еще не присылал стикеров, попробуйте подобрать что-нибудь симпатичное на нашем сайте в разделе Стикеры.
— Настройки автозагрузки медиафайлов — особенно полезно при роуминге.
☰ — Настройки — Трафик и хранилище — По мобильной сети/По Wi-Fi/В роуминге — Выберите типы файлов, на которые готовы тратить трафик при каждом виде подключения.
(☰ — Setting — Data and Storage — When using mobile data/When connected on Wi-Fi/When roaming — Выберите типы файлов, на которые готовы тратить трафик при каждом виде подключения.)
Для администраторов каналов и групп
— Хештеги — используйте их в групповых чатах для быстрого доступа к сообщениям по той же тематике, и в группах — для структурирования контента, который Вы в них публикуете. По тем же причинам будут полезны при использовании в облаке.
— Телеграф — Внешний сервис telegra.ph для моментального просмотра внутри Телеграм больших статей, требующих более сложной верстки чем может предоставить стандартный функционал мессенджера. Просто оформляете статью, жмете на кнопку Publish, копируете URL страницы на которой Вы это делали и добавляете его в сообщении, которое собираетесь опубликовать на своем канале.
— Телескоп — функция записи круглых видеороликов для групп и внешний сервис telesco.pe для публикации этих видео во внешнем вебе.
Тапните по иконке с микрофоном в правом нижнем углу, что бы она поменялась на камеру — Зажмите иконку с камерой и не отпускайте пока не закончите запись (если не хочется постоянно держать палец на мониторе, сделайте от иконки камеры скролл вверх и тогда камера заблокируется в режиме записи).
Все записи для ваших групп и каналов доступны на внешнем сервисе telesco.pe А если точнее, то они доступны по адресу telesco.pe/nazvanie_vashego_kanala . С помощью этого сервиса (нажав на стрелочку справа от видео) Вы можете не только скопировать URL записи и поделиться ее с людьми, у которых нет аккаунта в Телеграм, но и расшарить ее в Twitter и Facebook
Еще функции
— Возможность отключать уведомления — эту функцию можно настроить как для отдельного чата, группы, канала или бота, так и для все их сразу.
Для каждого контакта и группы отдельно:
Тап по контакту, боту, группе — ⋮ — Отключить уведомления — Отключить или тап по каналу — внизу экрана Отключить уведомления
(Тап по контакту, боту, группе — ⋮ — Mute notifications — Disabled или тап по каналу — внизу экрана Mute)
Для всех контактов и групп сразу
☰ — Настройки — Уведомления и звук — Сообщения/Группы — Сигнал — Выключить переключатель
(☰ — Setting — Notification and Sounds — Message notifications/Group notifications — Alert — Выключить переключатель)
— Картинка в картинке — функция которая позволяет вам смотреть видео загруженные в Телеграм, видео доступные в Телеграм по внешним ссылкам и Телескоп-видео, не отрываясь от чтения ваших любимых каналов и переписки.
Открыв какой-либо видео файл в мессенджере нажмите на иконку с двумя прямоугольниками в правом верхнем углу видеозаписи. После этого видео уменьшится в размерах, но продолжит воспроизведение, а Вы сможете использовать мессенджер для переписки и чтения. Зажав видео пальцем Вы можете его перемещать. Чтобы закрыть запись — сдвиньте ее за границу экрана.
— Выбор браузера для внешних ссылок. — для тех, кого по каким-либо причинам не устраивает встроенный браузер в Телеграм (например, отсутствие в нем закладок, вкладок для параллельного поиска чего-либо и пр.)
☰ — Настройки — Сообщения, Встроенный браузер — поставить переключатель в выключенное положение
(☰ — Setting — Message, In-app Browser — поставить переключатель в выключенное положение)
— Сохранение скриншотов на клиенте для настольных компьютеров и отправка их в облако — Функция доступная в десктоп версии мессенджера.
PrtSc — Жмем на контакт, которому хотим отправить скриншот — Ставим курсор на окно ввода сообщения — Правая кнопка мыши — Paste
— Сторонние приложения, работающие на протоколе MT Proto. Их также как и официальный клиент для Telegram можно найти в магазинах приложений, установленных на Вашем устройстве. Правда достойное мы пока видели только одно. Это Plus Messenger (не реклама) для операционной системы Android. Понравится тем, кто начал путаться в своем списке контактов, так как в нем все контакты, группы, супергруппы, каналы и боты разбиты по вкладкам. Еще одним плюсом является то, что в нем по умолчанию встроен русский язык.
Логирование в телеграм, или история о том, как я сделал питон библиотеку
Модуль 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.
Рассмотрим код примера
Особо интересна для нас строка, в которой подключается логирование в телеграмм.
В функцию setup() нужно просто передать тот logger, к которому вы хотите подключить мост. Если заглянуть в документацию, то можно посмотреть на другие параметры функции setup(). С помощью них можно, в частности, настроить формат, в котором логи будут отправлены.