Fournisseur de journalisation pour Telegram (.NET 5 / .NET Core)

Ce n'est un secret pour personne que Telegram est actuellement l'un des messagers les plus populaires. Surtout parmi les professionnels de l'informatique. Il est convivial, ne contient aucune publicité intégrée et fonctionne de manière très stable. La plupart du temps, je communique à la fois sur le travail et sur des problèmes personnels dans ce messager. Par conséquent, un jour, j'ai pensé que ce serait pratique pour que dans le même messager je puisse recevoir des notifications sur le fonctionnement de certains de mes services. À ce moment-là, je travaillais activement à l'intégration du projet // devdigest et Telegram, donc en utilisant le même SDK Telegram Bot natif, j'ai rapidement implémenté le logger.





Il y a quelques jours, j'ai décidé de revenir sur ce projet, de nettoyer légèrement et de refactoriser le code, puis de le rendre public - peut-être que la possibilité d'obtenir des journaux dans Telegram sera utile à quelqu'un d'autre.





Voici comment les journaux de télégrammes proviennent de l'un des projets que je fais
Voici comment les journaux de télégrammes proviennent de l'un des projets que je fais

Formation

Avant de passer à la configuration de l'enregistreur lui-même, vous devrez effectuer quelques étapes préliminaires. À savoir, créez un canal (public ou privé) où les journaux seront affichés et créez un bot dans les télégrammes, à travers lequel le processus de publication des journaux sera mis en œuvre.





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": "*"
}

      
      



Ensuite, une instance IConfiguration doit être passée à la méthode d'extension AddTelegram (),





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>(); });

      
      



Un exemple est ici





Installation

Vous pouvez installer le journal depuis NuGet ou intégrer le code directement dans votre projet. La bibliothèque est distribuée sous la licence MIT .












All Articles