2024-04-04 00:02:34 +03:00
2024-04-04 00:02:34 +03:00
2024-04-04 00:02:34 +03:00
2024-04-04 00:02:34 +03:00
2024-04-04 00:02:34 +03:00
2024-04-04 00:02:34 +03:00
2024-04-04 00:02:34 +03:00

Telegram Logrus Hook

This hook emits log messages (and corresponding fields) to the Telegram API for logrus.

Installation

Install the package with:

go get git.company.lan/gopkg/telegramhook

Usage

See the tests for working examples. Also:

import (
	"time"

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

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

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

}

Also you can set custom http.Client to use SOCKS5 proxy for example

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.WithAsync(true),
		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...")
	...

}
Languages
Go 100%