Packages
electric
1.3.3
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.10
1.6.9
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.1
1.5.0
1.4.16
1.4.16-beta-1
1.4.15
1.4.14
1.4.13
1.4.12
1.4.11
1.4.10
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.4
1.3.3
1.3.2
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.14
1.1.13
1.1.12
1.1.11
1.1.10
1.1.9
1.1.8
1.1.7
1.1.6
retired
1.1.5
retired
1.1.4
retired
1.1.3
retired
1.1.2
1.1.1
1.1.0
1.0.24
1.0.23
1.0.22
1.0.21
1.0.20
1.0.19
1.0.18
1.0.17
1.0.15
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-beta.23
1.0.0-beta.22
1.0.0-beta.20
1.0.0-beta.19
1.0.0-beta.18
1.0.0-beta.17
1.0.0-beta.16
1.0.0-beta.15
1.0.0-beta.14
1.0.0-beta.13
1.0.0-beta.12
1.0.0-beta.11
1.0.0-beta.10
1.0.0-beta.9
1.0.0-beta.8
1.0.0-beta.7
1.0.0-beta.6
1.0.0-beta.5
1.0.0-beta.4
1.0.0-beta.3
1.0.0-beta.2
1.0.0-beta.1
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.1
0.8.0
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.5.2
0.4.4
Postgres sync engine. Sync little subsets of your Postgres data into local apps and services.
Current section
Files
Jump to
Current section
Files
lib/electric/telemetry.ex
defmodule Electric.Telemetry do
require Logger
@log_level Application.compile_env(:electric, :telemetry_log_level, false)
defmacro __using__(_opts) do
quote do
import Electric.Telemetry, only: [with_telemetry: 2]
end
end
# uses the availability of the given dependencies to optionally compile
# the provided block when telemetry is enabled in the application config
defmacro with_telemetry(dependencies, do: block, else: else_block) do
include_with_telemetry(__CALLER__, __ENV__, dependencies, block, else_block)
end
defmacro with_telemetry(dependencies, do: block) do
include_with_telemetry(__CALLER__, __ENV__, dependencies, block, nil)
end
defp include_with_telemetry(caller, env, dependencies, block, else_block) do
modules = List.wrap(dependencies) |> Enum.map(&Macro.expand(&1, env))
telemetry_code_available? = Enum.all?(modules, &Code.ensure_loaded?/1)
if Electric.telemetry_enabled?() && telemetry_code_available? do
if @log_level do
Logger.log(
@log_level,
"Enabling telemetry in #{caller.module || Path.relative_to(caller.file, Path.expand("..", __DIR__))}"
)
end
quote(do: unquote(block))
else
if else_block, do: quote(do: unquote(else_block))
end
end
end