Русский
Русский
English
Статистика
Реклама

Провайдер логирования для Telegram (.NET 5 .NET Core)

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

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

Вот в таком виде приходят логи в телеграмм из одного из проектов, которыми я занимаюсьВот в таком виде приходят логи в телеграмм из одного из проектов, которыми я занимаюсь

Подготовка

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

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

Дале нужно получить идентификатор канала. Для публичных каналов все просто - в качестве идентификатора мы можем использовать имя канала. Для приватных каналов все чуть-чуть сложнее.

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

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

{  "update_id": 111001100,  "message": {    "message_id": 123456,    "from": {      "id": 12345678,      "is_bot": false,      "first_name": "FirstName",      "username": "username",      "language_code": "en"    },    "chat": {      "id": 123456,      "first_name": "FirstName",      "username": "username",      "type": "private"    },    "date": 1111111111,    "forward_from_chat": {      "id": -1123456789101,      "title": "torf.tv logs",      "type": "channel"    },    "forward_from_message_id": 1,    "forward_date": 1111111111,    "text": "test"  }}

Идентификатор канала находится в блоке forward_from_chat -> id

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

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

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

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

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

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

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

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

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

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

var options = new TelegramLoggerOptions{    AccessToken = "1234567890:AAAaaAAaa_AaAAaa-AAaAAAaAAaAaAaAAAA",    ChatId = "-0000000000000",    LogLevel = LogLevel.Information,    Source = "Human Readable Project Name"};

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

builder  .ClearProviders()  .AddTelegram(options)  .AddConsole();

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

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

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

{  "Logging": {    "LogLevel": {      "Default": "Information",      "Microsoft": "Warning",      "Microsoft.Hosting.Lifetime": "Information"    },    "Telegram": {      "LogLevel": "Warning",      "AccessToken": "1234567890:AAAaaAAaa_AaAAaa-AAaAAAaAAaAaAaAAAA",      "ChatId": "@channel_name",      "Source": "Human Readable Project Name"    }  },  "AllowedHosts": "*"}

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

public static IHostBuilder CreateHostBuilder(string[] args) =>    Host.CreateDefaultBuilder(args)        .ConfigureLogging((context, builder) =>        {            if (context.Configuration != null)                builder                    .AddTelegram(context.Configuration)                    .AddConsole();        })        .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<startup>(); });

Пример находится здесь

Установка

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

Источник: habr.com
К списку статей
Опубликовано: 27.01.2021 18:04:51
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Программирование

Net

C

Telegram

Telegrambot

Logging

Logger

Net core

Net 5

Net standard

Logs

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru