Packages
k8s
2.4.1
2.8.0
2.7.0
2.6.2
2.6.1
2.6.0
2.5.0
2.4.2
2.4.1
2.4.0
2.3.0
2.2.0
2.1.1
2.1.0
2.0.3
2.0.2
2.0.1
2.0.0
2.0.0-rc.6
2.0.0-rc.5
2.0.0-rc.4
2.0.0-rc.3
2.0.0-rc.2
2.0.0-rc.1
2.0.0-rc.0
1.2.1
1.2.0
1.1.10
1.1.9
1.1.8
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.0
1.0.0-rc1
0.5.2
0.5.1
0.5.0
0.5.0-rc.2
0.5.0-rc.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
retired
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.3
Kubernetes API Client for Elixir
Current section
Files
Jump to
Current section
Files
lib/k8s/sys/logger.ex
defmodule K8s.Sys.Logger do
@moduledoc "Attaches telemetry events to the Elixir Logger"
require Logger
defmacro log_prefix(stmt) do
prefix = __CALLER__.module |> Module.split() |> Enum.join(".")
prefix = prefix <> " "
quote do
unquote(prefix) <> unquote(stmt)
end
end
@doc """
Attaches telemetry events to the Elixir Logger
"""
@spec attach() :: :ok
def attach do
events = K8s.Sys.Telemetry.events()
:telemetry.attach_many("k8s-events-logger", events, &__MODULE__.log_handler/4, :debug)
end
@doc false
@spec log_handler(keyword, map | integer, map, atom) :: :ok
def log_handler(event, measurements, metadata, preferred_level) do
event_name = Enum.join(event, ".")
level =
case Regex.match?(~r/fail|error/, event_name) do
true -> :error
_ -> preferred_level
end
Logger.log(
level,
"TELEMETRY: #{event_name}",
library: :k8s,
measurements: measurements,
metadata: metadata
)
end
end