A logger backend for Telegram.
Add :logger_telegram_backend
to your list of dependencies in mix.exs
:
def deps do
[{:logger_telegram_backend, "~> 1.3"}]
end
First of all you need to create a Telegram
bot. Follow the instructions
here to create one and get the
token
for the bot. Since bots are not allowed to contact users, you need to
send a message first. Afterwards, retrieve your chat_id
with
$ curl -X GET https://api.telegram.org/botYOUR_TOKEN/getUpdates
.
Then add LoggerTelegramBackend
to the :backends
configuration, configure
the telegram chat_id
and bot token
:
config :logger, backends: [LoggerTelegramBackend, :console]
config :logger, :telegram,
chat_id: "$chatId",
token: "$botToken"
The logger configuration is read at runtime from the application environment so that you can provide it via distillerys dynamic configuration with environment variables.
The following options are available:
:level
- the level to be logged by this backend (either:debug
,:info
,:warn
or:error
). Note that messages are filtered by the general:level
configuration for the:logger
application first. If not explicitly configured all levels are logged.:metadata
- the metadata to be included in the telegram message. Defaults to[:line, :function, :module, :application, :file]
. Setting:metadata
to:all
gets all metadata.:metadata_filter
- the metadata which is required in order for a message to be logged. Example:metadata_filter: [application: :ui]
.:proxy
- connect via an HTTP tunnel or a socks5 proxy (only available when using:hackney
). See the hackney docs for further information.:http_client
- explicitly select the HTTP client (eitherLoggerTelegramBackend.HTTPClient.Hackney
orLoggerTelegramBackend.HTTPClient.Mint
). Picks either of which is installed as transitive or direct dependency.
config :logger, :telegram,
chat_id: "$chatId",
token: "$botToken",
level: :info,
metadata: :all
metadata_filter: [application: :ui]
config :logger, :telegram,
chat_id: "$chatId",
token: "$botToken",
proxy: "socks5://127.0.0.1:9050"
Like the
LoggerFileBackend
multiple logger handlers may be configured, each with different :chat_id
s,
:level
s etc. Each handler has to be configured as a separate logger backend:
config :logger,
backends: [
{LoggerTelegramBackend, :telegram_filter},
{LoggerTelegramBackend, :telegram_level},
:console
]
config :logger, :telegram_filter,
chat_id: "$chatId",
token: "$botToken",
metadata_filter: [application: :ui],
metadata: [:line, :function, :module, :pid]
config :logger, :telegram_level,
chat_id: "$chatId",
token: "$botToken",
level: :warn