Packages
electric
1.1.0
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, [Electric.Telemetry, :log_level], false)
defmacro __using__(_opts) do
quote do
import Electric.Telemetry
end
end
# uses the availability of the given dependencies to optionally compile
# the provided block when MIX_TARGET is `:application`.
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__))}"
)
quote(do: unquote(block))
else
if else_block, do: quote(do: unquote(else_block))
end
end
end