Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

samber/slog-telegram

Repository files navigation

slog: Telegram handler

A Telegram Handler for slog Go library.

See also:

HTTP middlewares:

Loggers:

Log sinks:

Install

go get github.com/samber/slog-telegram/v2

Compatibility: go >= 1.21

No breaking changes will be made to exported APIs before v3.0.0.

Usage

GoDoc: https://pkg.go.dev/github.com/samber/slog-telegram/v2

Handler options

type Option struct {
// log level (default: debug)
Level slog.Leveler

// Telegram bot token
Token string
// Username of the channel in the form of `@username`
Username string

// optional: customize Telegram message builder
Converter Converter

// optional: see slog.HandlerOptions
AddSource bool
ReplaceAttr func(groups []string, a slog.Attr) slog.Attr
}

Attributes will be injected in message.

Other global parameters:

slogtelegram.SourceKey = "source"

Example

import (
slogtelegram "github.com/samber/slog-telegram/v2"
"log/slog"
)

func main() {
token := "xxxx"
username := "@xxxx"

logger := slog.New(slogtelegram.Option{Level: slog.LevelDebug, Token: token, Username: username}.NewTelegramHandler())
logger = logger.With("release", "v1.0.0")

logger.
With(
slog.Group("user",
slog.String("id", "user-123"),
slog.Time("created_at", time.Now().AddDate(0, 0, -1)),
),
).
With("environment", "dev").
With("error", fmt.Errorf("an error")).
Error("A message")
}

Contributing

Don't hesitate ;)

# Install some dev dependencies
make tools

# Run tests
make test
# or
make watch-test

Contributors

Show your support

Give a if this project helped you!

License

Copyright (c) 2023 Samuel Berthe.

This project is MIT licensed.

Sponsor this project

Contributors