Telegramが現在最も人気のあるメッセンジャーの1つであることは周知の事実です。特にITプロフェッショナルの間で。ユーザーフレンドリーで、広告が埋め込まれておらず、非常に安定して動作します。ほとんどの場合、私はこのメッセンジャーで仕事と個人的な問題の両方についてコミュニケーションを取ります。そのため、ある日、同じメッセンジャーで一部のサービスの運用に関する通知を受け取ることができれば便利だと思いました。当時、私は// devdigestとTelegramプロジェクトの統合に積極的に取り組んでいたので、同じネイティブのTelegram Bot SDKを使用して、ロガーをすばやく実装しました。
数日前、私はこのプロジェクトに戻り、コードを少しクリーンアップしてリファクタリングしてから、公開することにしました。Telegramでログを取得する機能は、他の誰かに役立つかもしれません。
トレーニング
ロガー自体の構成に進む前に、いくつかの準備手順を完了する必要があります。つまり、ログが表示されるチャネル(パブリックまたはプライベート)を作成し、電報でボットを作成します。これにより、ログを公開するプロセスが実装されます。
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": "*"
}
次に、IConfigurationインスタンスを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>(); });
インストール
NuGetからロガーをインストールするか、コードをプロジェクトに直接統合することができます。ライブラリはMITライセンスの下で配布されています。