View Source LoggerTelegramBackend (logger_telegram_backend v3.0.0-rc.1)
A logger backend for Telegram.
Installation
Add :logger_telegram_backend, :logger_backends and :hackney to your list of dependencies in mix.exs:
def deps do
[
{:logger_telegram_backend, "~> 3.0-rc"},
{:logger_backends, "~> 1.0"},
{:hackney, "~> 1.18"},
]
endIn your Application.start/2 callback, add the LoggerTelegramBackend backend:
@impl true
def start(_type, _args) do
LoggerBackends.add(LoggerTelegramBackend)
# ...
endConfiguration
First you need to create a Telegram Bot. Follow the instructions here to create one and get the token for the bot. You will need to send a message first as bots are not allowed to contact users. Then retrieve your chat_id with $ curl -X GET https://api.telegram.org/botYOUR_TOKEN/getUpdates.
Then configure the telegram chat_id and bot token:
config :logger, LoggerTelegramBackend,
chat_id: "$chatId",
token: "$botToken"Options
The available options are:
:level- the level to be logged by this backend (either:debug,:info,:warningor:error).Note that messages are first filtered by the general
:levelconfiguration for the:loggerapplication.Default:
nil(all levels are logged):metadata- the metadata to be included in the message. Setting:metadatato:allwill get all metadata. Default:[:line, :function, :module, :application, :file].:metadata_filter- the metadata which is required in order for a message to be logged.Default:
nil:client- If you need different functionality for the HTTP client, you can define your own module that implements theLoggerTelegramBackend.HTTPClientbehaviour and setclientto that module.By default, selects the first client in the list whose application is loaded:
LoggerTelegramBackend.Finch(requires:finch)LoggerTelegramBackend.HackneyClient(requires:hackney)
:client_pool_opts- The options passed to configure the pool.Default:
[]:client_request_opts- The options passed on every request.Default:
[]
Examples
Custom HTTP client
Add a module that implements the
LoggerTelegramBackend.HTTPClientbehaviourPass your client module to the
:clientoption:config :logger, LoggerTelegramBackend, client: MyClient, # ...
Metadata filter
config :logger, LoggerTelegramBackend,
chat_id: "$chatId",
token: "$botToken",
level: :info,
metadata: :all
metadata_filter: [application: :ui]SOCKS5 proxy
config :logger, LoggerTelegramBackend,
chat_id: "$chatId",
token: "$botToken",
hackney_opts: [
proxy: {:socks5, ~c"127.0.0.1", 9050}
]See the hackney docs for further information.