Files

1.9 KiB

Telegram Logrus Hook

Этот хук для logrus отправляет сообщения журнала (и соответствующие поля) в Telegram API.

Установка

Установить пакет командой:

go get git.company.lan/gopkg/telegramhook

Использование

import (
	"time"

	log "git.company.lan/gopkg/logrus"
	"git.company.lan/gopkg/telegramhook"
)

func main() {
	hook, err := telegramhook.NewTelegramHook(
		"MyCoolApp",
		"MYTELEGRAMTOKEN",
		"@mycoolusername",
		telegramhook.WithLevel(logrus.ErrorLevel),
		telegramhook.WithTimeout(30 * time.Second),
	)
	if err != nil {
		log.Fatalf("Encountered error when creating Telegram hook: %s", err)
	}
	log.AddHook(hook)

	// Receive messages on failures
	log.Errorf("Uh oh...")
	...

}

Вы также можете использовать настроенный http.Client, например, использующий SOCKS5-прокси:

import (
	"context"
	"net"
	"net/http"
	"time"

	log "git.company.lan/gopkg/logrus"
	"git.company.lan/gopkg/telegramhook"
	"golang.org/x/net/proxy"
)

func main() {
	dialer, err := proxy.SOCKS5("tcp", "127.0.0.1:54321", nil, proxy.Direct)
	dialContext := func(ctx context.Context, network, address string) (net.Conn, error) {
		return dialer.Dial(network, address)
	}
	httpTransport := &http.Transport{
		DialContext:       dialContext,
		DisableKeepAlives: true,
	}
	httpClient := &http.Client{Transport: httpTransport}

	hook, err := telegramhook.NewTelegramHookWithClient(
		"MyCoolApp",
		"MYTELEGRAMTOKEN",
		"@mycoolusername",
		httpClient,
		telegramhook.WithTimeout(30 * time.Second),
	)
	if err != nil {
		log.Fatalf("Encountered error when creating Telegram hook: %s", err)
	}
	log.AddHook(hook)

	// Receive messages on failures
	log.Errorf("Uh oh...")
	...

}