Não é segredo que o Telegram é atualmente um dos mensageiros mais populares. Principalmente entre profissionais de TI. É fácil de usar, não tem anúncios embutidos e funciona muito estável. Na maior parte do tempo, comunico-me tanto sobre o trabalho como sobre questões pessoais neste mensageiro. Por isso, um dia pensei que seria conveniente que no mesmo messenger pudesse receber notificações sobre o funcionamento de alguns dos meus serviços. Naquela época, eu estava trabalhando ativamente na integração do projeto // devdigest e do Telegram, então, usando o mesmo SDK nativo do Bot do Telegram, implementei rapidamente o logger.
Há alguns dias, decidi retornar a este projeto, limpar um pouco e refatorar o código e, em seguida, torná-lo publicamente disponível - talvez a capacidade de obter logs no Telegram seja útil para outra pessoa.
Treinamento
Antes de prosseguir com a configuração do próprio logger, você precisará concluir algumas etapas preliminares. Ou seja, criar um canal (público ou privado) onde os logs serão exibidos e criar um bot em telegramas, através do qual será implementado o processo de publicação dos logs.
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": "*"
}
Em seguida, uma instância IConfiguration deve ser passada para o método de extensão 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>(); });
Um exemplo está aqui
Instalação
Você pode instalar o logger do NuGet ou integrar o código diretamente em seu projeto. A biblioteca é distribuída sob a licença do MIT .