[Программирование, .NET, C#] Провайдер логирования для Telegram (.NET 5 / .NET Core)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Не секрет, что 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
===========
Похожие новости:
- [JavaScript, Программирование, Тестирование веб-сервисов] Тестирование с использованием Puppeteer
- [Программирование, Управление разработкой, Управление персоналом] Как начать программировать в парах
- [Семантика, Программирование, Prolog, Бизнес-модели] Проектируем мультипарадигменный язык программирования. Часть 6 — Заимствования из SQL
- [Программирование, Разработка мобильных приложений, Dart, Flutter] Работа с асинхронностью в Dart
- [Программирование, Машинное обучение] Распознавание речи с помощью инструментов машинного обучения
- [Системное администрирование, Программирование, IT-инфраструктура, DevOps] Создание современных процессов CI/CD для бессерверных приложений с Red Hat OpenShift Pipelines и Argo CD. Часть 2 (перевод)
- [.NET, Облачные сервисы] Переход с Azure на GCP, с ASP.NET MVC на ASP.NET Core 3.1
- [Программирование, Java, Микросервисы] Spring Cloud и Spring Boot. Часть 1: использование Eureka Server (перевод)
- [Программирование микроконтроллеров, Компьютерное железо, DIY или Сделай сам] Raspberry Pi Pico на МК RP2040: начало и первые шаги. Что есть поесть за $4
- [Информационная безопасность, Мессенджеры, Социальные сети и сообщества] Бот в Telegram продаёт телефонные номера 500 млн пользователей Facebook из 19 стран, включая Россию
Теги для поиска: #_programmirovanie (Программирование), #_.net, #_c#, #_telegram, #_telegrambot, #_logging, #_logger, #_.net, #_.net_core, #_.net_5, #_.net_standard, #_logs, #_programmirovanie (
Программирование
), #_.net, #_c#
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 18:01
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Не секрет, что 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" } }
var options = new TelegramLoggerOptions
{ AccessToken = "1234567890:AAAaaAAaa_AaAAaa-AAaAAAaAAaAaAaAAAA", ChatId = "-0000000000000", LogLevel = LogLevel.Information, Source = "Human Readable Project Name" }; builder
.ClearProviders() .AddTelegram(options) .AddConsole(); {
"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": "*" } 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>(); }); =========== Источник: habr.com =========== Похожие новости:
Программирование ), #_.net, #_c# |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 18:01
Часовой пояс: UTC + 5