Skip to content

Commit e8f603f

Browse files
committed
Perform maintenance
* Fix typo README * Format code * Update dependencies * Add `@impl`
1 parent 0a9f318 commit e8f603f

9 files changed

Lines changed: 36 additions & 65 deletions

File tree

Makefile

Lines changed: 0 additions & 21 deletions
This file was deleted.

README.md

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# LoggerTelegramBackend
22

3-
A logger backend for [Telegram]( https://telegram.org/).
3+
A logger backend for [Telegram](https://telegram.org/).
44

55
## Installation
66

@@ -18,8 +18,8 @@ First of all you need to create a [Telegram
1818
bot](https://core.telegram.org/bots). Follow the [instructions
1919
here](https://core.telegram.org/bots#6-botfather) to create one and get the
2020
`token` for the bot. Since bots are not allowed to contact users, you need to
21-
send a message first. Afterwards, retrieve your `chat_id` with `$ curl -X GET
22-
https://api.telegram.org/botYOUR_TOKEN/getUpdates`.
21+
send a message first. Afterwards, retrieve your `chat_id` with
22+
`$ curl -X GET https://api.telegram.org/botYOUR_TOKEN/getUpdates`.
2323

2424
Then add `LoggerTelegramBackend` to the `:backends` configuration, configure
2525
the telegram `chat_id` and bot `token`:
@@ -41,16 +41,15 @@ with environment variables.
4141

4242
The following options are available:
4343

44-
* `:level` - the level to be logged by this backend (either `:debug`,
45-
`:info`, `:warn` or `:error`). Note that messages are filtered by the
46-
general `:level` configuration for the `:logger` application first. If not
47-
explicitly configured all levels are logged.
48-
* `:metadata` - the metadata to be included in the telegram message. Defaults
49-
to `[:line, :function, :module, :application, :file]`. Setting `:metadata`
50-
to `:all` gets all metadata.
51-
* `:metadata_filter` - the metadata which is required in order for a message
52-
to be logged. Example: `metadata_filter: [application: :ui]`.
53-
44+
* `:level` - the level to be logged by this backend (either `:debug`,
45+
`:info`, `:warn` or `:error`). Note that messages are filtered by the
46+
general `:level` configuration for the `:logger` application first. If not
47+
explicitly configured all levels are logged.
48+
* `:metadata` - the metadata to be included in the telegram message. Defaults
49+
to `[:line, :function, :module, :application, :file]`. Setting `:metadata`
50+
to `:all` gets all metadata.
51+
* `:metadata_filter` - the metadata which is required in order for a message
52+
to be logged. Example: `metadata_filter: [application: :ui]`.
5453

5554
#### Example
5655

lib/telegram_logger_backend.ex

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@ defmodule LoggerTelegramBackend do
1414
@default_sender {Telegram, [:token, :chat_id]}
1515
@default_metadata [:line, :function, :module, :application, :file]
1616

17-
# Callbacks
18-
17+
@impl :gen_event
1918
def init(__MODULE__), do: init({__MODULE__, @default_name})
2019

2120
def init({__MODULE__, name}) when is_atom(name) do
@@ -26,10 +25,12 @@ defmodule LoggerTelegramBackend do
2625
{:ok, state}
2726
end
2827

28+
@impl :gen_event
2929
def handle_call({:configure, options}, state) do
3030
{:ok, :ok, configure(options, state)}
3131
end
3232

33+
@impl :gen_event
3334
def handle_event({_level, gl, _event}, state) when node(gl) != node() do
3435
{:ok, state}
3536
end
@@ -49,6 +50,7 @@ defmodule LoggerTelegramBackend do
4950
{:ok, state}
5051
end
5152

53+
@impl :gen_event
5254
def handle_info(_message, state) do
5355
{:ok, state}
5456
end

lib/telegram_logger_backend/formatter.ex

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@ defmodule LoggerTelegramBackend.Formatter do
55

66
alias LoggerTelegramBackend.Manager
77

8-
@name __MODULE__
9-
108
def start_link([min_demand, max_demand]) do
11-
GenStage.start_link(__MODULE__, {min_demand, max_demand}, name: @name)
9+
GenStage.start_link(__MODULE__, {min_demand, max_demand}, name: __MODULE__)
1210
end
1311

1412
# Callbacks

lib/telegram_logger_backend/manager.ex

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ defmodule LoggerTelegramBackend.Manager do
55

66
@name __MODULE__
77

8+
def start_link(_args) do
9+
GenStage.start_link(__MODULE__, :ok, name: @name)
10+
end
11+
812
def add_event(event) do
913
GenStage.cast(@name, {:add, event})
1014
end
1115

1216
# Callbacks
1317

14-
def start_link(_args) do
15-
GenStage.start_link(__MODULE__, :ok, name: @name)
16-
end
17-
1818
def init(:ok) do
1919
{:producer, {:queue.new(), 0}}
2020
end
@@ -35,11 +35,8 @@ defmodule LoggerTelegramBackend.Manager do
3535

3636
defp dispatch_events(queue, demand, events) when demand > 0 do
3737
case :queue.out(queue) do
38-
{:empty, queue} ->
39-
{:noreply, events, {queue, demand}}
40-
41-
{{:value, event}, queue} ->
42-
dispatch_events(queue, demand - 1, [event | events])
38+
{:empty, queue} -> {:noreply, events, {queue, demand}}
39+
{{:value, event}, queue} -> dispatch_events(queue, demand - 1, [event | events])
4340
end
4441
end
4542

lib/telegram_logger_backend/sender.ex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@ defmodule LoggerTelegramBackend.Sender do
55

66
alias LoggerTelegramBackend.Formatter
77

8-
@name __MODULE__
9-
108
def start_link(args) do
11-
GenStage.start_link(__MODULE__, args, name: @name)
9+
GenStage.start_link(__MODULE__, args, name: __MODULE__)
1210
end
1311

1412
# Callbacks
@@ -21,6 +19,8 @@ defmodule LoggerTelegramBackend.Sender do
2119
process_events(events, state)
2220
end
2321

22+
# Private
23+
2424
defp process_events([], state) do
2525
{:noreply, [], state}
2626
end

mix.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ defmodule LoggerTelegramBackend.Mixfile do
44
def project do
55
[
66
app: :logger_telegram_backend,
7-
version: "1.0.2",
7+
version: "1.0.3",
88
elixir: "~> 1.5",
99
start_permanent: Mix.env() == :prod,
1010
deps: deps(),

mix.lock

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
%{
2-
"certifi": {:hex, :certifi, "2.0.0", "a0c0e475107135f76b8c1d5bc7efb33cd3815cb3cf3dea7aefdd174dabead064", [:rebar3], [], "hexpm"},
3-
"earmark": {:hex, :earmark, "1.2.4", "99b637c62a4d65a20a9fb674b8cffb8baa771c04605a80c911c4418c69b75439", [:mix], [], "hexpm"},
2+
"certifi": {:hex, :certifi, "2.3.1", "d0f424232390bf47d82da8478022301c561cf6445b5b5fb6a84d49a9e76d2639", [:rebar3], [{:parse_trans, "3.2.0", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm"},
3+
"earmark": {:hex, :earmark, "1.2.5", "4d21980d5d2862a2e13ec3c49ad9ad783ffc7ca5769cf6ff891a4553fbaae761", [:mix], [], "hexpm"},
44
"ex_doc": {:hex, :ex_doc, "0.18.3", "f4b0e4a2ec6f333dccf761838a4b253d75e11f714b85ae271c9ae361367897b7", [:mix], [{:earmark, "~> 1.1", [hex: :earmark, repo: "hexpm", optional: false]}], "hexpm"},
55
"exactor": {:hex, :exactor, "2.2.4", "5efb4ddeb2c48d9a1d7c9b465a6fffdd82300eb9618ece5d34c3334d5d7245b1", [:mix], [], "hexpm"},
66
"exjsx": {:hex, :exjsx, "4.0.0", "60548841e0212df401e38e63c0078ec57b33e7ea49b032c796ccad8cde794b5c", [:mix], [{:jsx, "~> 2.8.0", [hex: :jsx, repo: "hexpm", optional: false]}], "hexpm"},
7-
"exvcr": {:hex, :exvcr, "0.10.1", "cb266e5cc0d4fef12572ce6673d13f97aa3c302911010d64d51cee0690f566d1", [:mix], [{:exactor, "~> 2.2", [hex: :exactor, repo: "hexpm", optional: false]}, {:exjsx, "~> 4.0", [hex: :exjsx, repo: "hexpm", optional: false]}, {:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: true]}, {:httpotion, "~> 3.1", [hex: :httpotion, repo: "hexpm", optional: true]}, {:ibrowse, "~> 4.4", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:meck, "~> 0.8", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm"},
7+
"exvcr": {:hex, :exvcr, "0.10.2", "a66a0fa86d03153e5c21e38b1320d10b537038d7bc7b10dcc1ab7f0343569822", [:mix], [{:exactor, "~> 2.2", [hex: :exactor, repo: "hexpm", optional: false]}, {:exjsx, "~> 4.0", [hex: :exjsx, repo: "hexpm", optional: false]}, {:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: true]}, {:httpotion, "~> 3.1", [hex: :httpotion, repo: "hexpm", optional: true]}, {:ibrowse, "~> 4.4", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:meck, "~> 0.8", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm"},
88
"gen_stage": {:hex, :gen_stage, "0.13.1", "edff5bca9cab22c5d03a834062515e6a1aeeb7665fb44eddae086252e39c4378", [:mix], [], "hexpm"},
9-
"hackney": {:hex, :hackney, "1.11.0", "4951ee019df102492dabba66a09e305f61919a8a183a7860236c0fde586134b6", [:rebar3], [{:certifi, "2.0.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "5.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "1.0.2", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.1", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm"},
10-
"httpoison": {:hex, :httpoison, "1.0.0", "1f02f827148d945d40b24f0b0a89afe40bfe037171a6cf70f2486976d86921cd", [:mix], [{:hackney, "~> 1.8", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm"},
11-
"idna": {:hex, :idna, "5.1.0", "d72b4effeb324ad5da3cab1767cb16b17939004e789d8c0ad5b70f3cea20c89a", [:rebar3], [{:unicode_util_compat, "0.3.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm"},
9+
"hackney": {:hex, :hackney, "1.12.1", "8bf2d0e11e722e533903fe126e14d6e7e94d9b7983ced595b75f532e04b7fdc7", [:rebar3], [{:certifi, "2.3.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "5.1.1", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "1.0.2", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.1", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm"},
10+
"httpoison": {:hex, :httpoison, "1.1.1", "96ed7ab79f78a31081bb523eefec205fd2900a02cda6dbc2300e7a1226219566", [:mix], [{:hackney, "~> 1.8", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm"},
11+
"idna": {:hex, :idna, "5.1.1", "cbc3b2fa1645113267cc59c760bafa64b2ea0334635ef06dbac8801e42f7279c", [:rebar3], [{:unicode_util_compat, "0.3.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm"},
1212
"jsx": {:hex, :jsx, "2.8.3", "a05252d381885240744d955fbe3cf810504eb2567164824e19303ea59eef62cf", [:mix, :rebar3], [], "hexpm"},
1313
"meck": {:hex, :meck, "0.8.9", "64c5c0bd8bcca3a180b44196265c8ed7594e16bcc845d0698ec6b4e577f48188", [:rebar3], [], "hexpm"},
1414
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm"},
1515
"mimerl": {:hex, :mimerl, "1.0.2", "993f9b0e084083405ed8252b99460c4f0563e41729ab42d9074fd5e52439be88", [:rebar3], [], "hexpm"},
16+
"parse_trans": {:hex, :parse_trans, "3.2.0", "2adfa4daf80c14dc36f522cf190eb5c4ee3e28008fc6394397c16f62a26258c2", [:rebar3], [], "hexpm"},
1617
"poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm"},
1718
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.1", "28a4d65b7f59893bc2c7de786dec1e1555bd742d336043fe644ae956c3497fbe", [:make, :rebar], [], "hexpm"},
1819
"unicode_util_compat": {:hex, :unicode_util_compat, "0.3.1", "a1f612a7b512638634a603c8f401892afbf99b8ce93a45041f8aaca99cadb85e", [:rebar3], [], "hexpm"},

test/logger_telegram_backend_test.exs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@ defmodule LoggerTelegramBackendTest do
77
Logger.remove_backend(:console)
88
end
99

10-
setup do
11-
Logger.remove_backend(LoggerTelegramBackend)
12-
:ok
13-
end
14-
1510
test "logs the message to the specified sender" do
1611
:ok = configure()
1712

@@ -33,8 +28,7 @@ defmodule LoggerTelegramBackendTest do
3328
<<_line::size(16)>> <>
3429
"\n" <>
3530
"Function: \"test formats the message with markdown/1\"\n" <>
36-
"Module: LoggerTelegramBackendTest\n" <>
37-
"File:" <> _file
31+
"Module: LoggerTelegramBackendTest\n" <> "File:" <> _file
3832
}
3933
end
4034

@@ -87,6 +81,7 @@ defmodule LoggerTelegramBackendTest do
8781
with true <- Process.register(self(), :logger_telegram_backend_test),
8882
:ok <-
8983
Application.put_env(:logger, :telegram, Keyword.merge(opts, sender: {TestSender, []})),
84+
_ <- Logger.remove_backend(LoggerTelegramBackend),
9085
{:ok, _} <- Logger.add_backend(LoggerTelegramBackend) do
9186
:ok
9287
end

0 commit comments

Comments
 (0)