Что такое логирование в телеграмме

Access-логи сайта для seo: автоматический анализ и отправка отчетов в Telegram

В данной статье описан пошаговый мануал по скачиванию логов с сервера, их объединении и парсинге с помощью Python, а также формирование необходимых отчетов с последующей отправкой в Telegram. Подробные комментарии приведены в коде соответствующих скриптов.

В предыдущей статье “Набор Python-скриптов для автоматизации seo задач” я уже затрагивал тему анализа access-логов сайта в целях seo-оптимизации. В данной статье не будет подробного описания, что такое логи и для чего их анализировать. В качестве теории приведу несколько ссылок на ресурсы, которые встречал за последнее время:

Данный подход будет полезен для изучения логов больших сайтов (от 1 млн. строк). Преимущества подхода: делаем свой бесплатный инструмент с кастомными отчетами.

Работа над логами будет проходить в несколько этапов:

Каждый этап вынесен в отдельный скрипт, который отрабатывает в установленное время на выделенном сервере по cron.

Логи анализируемого сайта в моем случае хранятся на выделенном сервере в виде gz архивов.

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

Задача данного скрипта каждый день в 23:55 скачивать с сервера и разархивировать логи за последние 7 дней.

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

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

В результате работы данного скрипта получаем csv файл с распарсенными логами (в моем случае анализируемый файл получился 644 MB) и набор сохраненных отчетов, которые будем использовать в дальнейшем для отправки.

Источник

Логирование в телеграмм, или история о том, как я сделал питон библиотеку

Что такое логирование в телеграмме. Смотреть фото Что такое логирование в телеграмме. Смотреть картинку Что такое логирование в телеграмме. Картинка про Что такое логирование в телеграмме. Фото Что такое логирование в телеграмме

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(). С помощью них можно, в частности, настроить формат, в котором логи будут отправлены.

Что такое логирование в телеграмме. Смотреть фото Что такое логирование в телеграмме. Смотреть картинку Что такое логирование в телеграмме. Картинка про Что такое логирование в телеграмме. Фото Что такое логирование в телеграмме

Outro

Весь исходный код есть на гитхабе: github.com/otter18/tg_logger.

Документация на английском есть на Read the Docs.

Источник

TelegramBot инструкция по созданию базового функционала для бота. (Часть 1)

Не так давно я предложил вам воспользоваться моим ботом для телеграмма.

Получив много вопросов в личку, я понял, что вопрос создания ботов для Телеграм довольно популярен.

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

Я решил написать цикл статей, в которых хочу показать базовые вещи, которые будут нужны вам для написания своего бота.
Вас ждет Java, Maven, TelegramAPI, Lombok и Log4j.
Кому интересно — прошу под кат…

И сразу с козырей зайду 🙂

То, о чем просили в предыдущей статье.

В ветке «master» будет финальная версия бота, которого мы вместе с вами и напишем, в процессе появления новых статей.

Полный исходники по этой статье будет находится в ветке «Part1-Base».

В данной части мы создадим с вами базовый шаблон, который способен будет:

Создаем стандартный maven проект

(я упущу мануалы по работе со средой разработки и базовые вещи из Java программирования. Все эти вещи достаточно легко гугляться.А если не будет получаться — пишите вопросы).

Давайте посмотрим, какие зависимости нам будут нужны в этом проекте.

В первую очередь это Lombok. Что это и зачем — можно почитать, например, тут.

И обязательно добавим логгер. Я использую log4j и чуть дальше покажу вам как полезно его можно использовать при отладке данного приложения и более глубокого осмысления работы TelegramAPI.

И, т.к. мы пишем бота для Телеграм, то и саму библиотеку от Telegram:

Структуру pom файла можно посмотреть тут
Структуру файла pom.xml можно увидеть тут.

Далее добавляем базовый класс Bot.java, который и будет реализовывать все наше взаимодействие с с сервисами Telegram. Работать мы будем с помощью LongPolling, т.к. этот метод не требует сертификатов шифрования и запускаться может с любой машины, которая имеет Java у себя на борту.

Для этого мы наследуемся от класса TelegramLongPollingBot и реализуем базовые методы:

public void onUpdateReceived(Update update)
public String getBotUsername()
public String getBotToken()

И от себя нам нужно будет добавить процедуру, которая будет подключать наш бот к TelegramAPI:

public void botConnect()

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

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

Этим займется класс App.java. Ссылка на файл: тут

Как вы видите, для работы бота нам понадобятся только «имя бота» и «токен», которые мы и передадим в конструкторе нашего класса Bot.

Имя и токен для бота вы можете получить у отца всех ботов :), написав ему в телеграмме.
Его ник: @BotFather
Общение с ним очень простое и лаконичное.

В результате у вас должен получиться такой диалог:

Что такое логирование в телеграмме. Смотреть фото Что такое логирование в телеграмме. Смотреть картинку Что такое логирование в телеграмме. Картинка про Что такое логирование в телеграмме. Фото Что такое логирование в телеграмме

Так же здесь пишут, что аккуратнее, никому не показывайте эту информацию, иначе кто-то другой сможет управлять вашим ботом 🙂

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

Так что с моими данными вам подключиться не получится. Регистрируйте свои. Новые данные укажите в классе App.java

Теперь запустив метод main в классе App мы позволим нашему боту подключиться и ждать новых сообщений. О своих действиях и попытках он напишет нам в консоле.

Log4j

Помните, выше я говорил о полезности библиотеки log4j. И вот тут для любопытных открывается клондайк полезных данных.

В файле log4j.properties уже прописаны базовые настройки для логирования и конкретные уровни логирования для сторонних классов и для тех, которые работают в нашем боте.

Базовый уровень логирования у нас указан как Error.

Для классов Bot и App указан вывод логов на уровне Debug.

Что это за уровни и чем отличаются — вы легко найдете в гугле.

Если хотите посмотреть, как и в каком порядке отрабатывает библиотека Телеграм все ваши действия — переключите режим общего логирования на уровень ниже: info или debug.

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

Уровни логирования меняются вот этой строчкой:
Чтобы получить логи по уровню info, ставите вот так:

Для уровня debug, вот так:

И в заключение

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

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

Как видно из кода бот делает следующее:

В дальнейшем я покажу вам, как в моих ботах реализуется:

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

Например, как вы думаете, существуют ли фильмы с такой «дикой» комбинацией жанров, как: документальный, ужасы, комедия.

А вот бот по команде

Скажет, что таких фильмов с 2010 по текущий момент сняли аж 6 штук 🙂

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

Спасибо вам за внимание. Программируйте в удовольствие 🙂

Источник

Логирование в телеграм, или история о том, как я сделал питон библиотеку

Что такое логирование в телеграмме. Смотреть фото Что такое логирование в телеграмме. Смотреть картинку Что такое логирование в телеграмме. Картинка про Что такое логирование в телеграмме. Фото Что такое логирование в телеграмме

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(). С помощью них можно, в частности, настроить формат, в котором логи будут отправлены.

Что такое логирование в телеграмме. Смотреть фото Что такое логирование в телеграмме. Смотреть картинку Что такое логирование в телеграмме. Картинка про Что такое логирование в телеграмме. Фото Что такое логирование в телеграмме

TgFileLogger

Стоит также упомянуть, что функцию отправки файлов я тоже добавил.

Что такое логирование в телеграмме. Смотреть фото Что такое логирование в телеграмме. Смотреть картинку Что такое логирование в телеграмме. Картинка про Что такое логирование в телеграмме. Фото Что такое логирование в телеграмме

Outro

Весь исходный код есть на гитхабе: github.com/otter18/tg_logger.

Документация на английском есть на Read the Docs.

Источник

Что такое логирование в телеграмме. Смотреть фото Что такое логирование в телеграмме. Смотреть картинку Что такое логирование в телеграмме. Картинка про Что такое логирование в телеграмме. Фото Что такое логирование в телеграмме

Не секрет, что Telegram является на данный момент одним из самых популярных мессенджеров. Особенно в среде ИТ-специалистов. Он удобен, в нем нет встроенной рекламы и работает весьма стабильно. Довольно большую часть времени я общаюсь как по работе, так и по личным вопросам именно в этом мессенджере. Поэтому в один прекрасный день я подумал о том, что было бы удобно, чтобы в этом же мессенджере я мог получать уведомления о работе некоторых своих сервисов. На тот момент я как раз активно работал над интеграцией проекта //devdigest и Telegram, поэтому используя тот же родной Telegram Bot SDK довольно быстро реализовал логгер.

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

Что такое логирование в телеграмме. Смотреть фото Что такое логирование в телеграмме. Смотреть картинку Что такое логирование в телеграмме. Картинка про Что такое логирование в телеграмме. Фото Что такое логирование в телеграммеВот в таком виде приходят логи в телеграмм из одного из проектов, которыми я занимаюсь

Подготовка

Прежде чем перейти к настройке самого логгера необходимо будет выполнить несколько предварительных шагов. А именно – создать канал (публичный, или приватный), где будут отображаться логи и создать бота в телеграмм, через которого и будет реализован процесс публикации логов.

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

Получение идентификатора приватного канала.

Чтобы получить идентификатор приватного канала придется воспользоваться помощью еще одного бота – @JsonDumpBot. Вам нужно будет любое сообщение из этого канала переслать в этот бот. В ответ вы получите сообщение примерно такого вида:

Теперь, имея идентификатор чата и токен бота мы можем перейти к настройке логгера.

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

Для конфигурации логгера используется класс TelegramLoggerOptions, который содержит следующие поля:

AccessToken – токен бота;

ChatId – идентификатор канала (приватного, или публичного), или чата, куда бот будет отправлять сообщения;

LogLevel – минимальный уровень сообщений, которые будут отправляться в канала. Обычно я в канал отправляю сообщения начиная с уровня Warning, или Error;

Source – удобочитаемое название сервиса. Полезно, если в один канал приходят сообщения из нескольких сервисов;

Существует несколько вариантов конфигурации логгера – непосредственно через код, или через файл кофигурации.

Настройка логгера в коде

Для начала нужно создать и инициализировать экземпляр класса TelegramLoggerOptions.

Зачем передать этот объект в метод-расширение AddTelegram():

Пример такой конфигурации можно посмотреть здесь.

Настройка логгера через файл конфигурации appconfig.json

Также блоггер можно настраивать через файл конфигурации приложения, как это показано ниже:

Далее, в метод-расширение AddTelegram() необходимо передать экземпляр IConfiguration,

Установка

Установить логгер можно из NuGet, или же интегрировать код прямо к себе в проект. Библиотека распространяется под лицензией MIT.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *