Packages
nerves_runtime
0.13.4
0.13.13
0.13.12
0.13.11
retired
0.13.10
0.13.9
0.13.8
0.13.7
0.13.6
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.0
0.11.10
0.11.9
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
retired
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.0
0.7.0
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.3
0.5.2
0.5.1
0.5.0
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.1
0.3.0
0.2.0
0.1.2
0.1.1
0.1.0
Small, general runtime utilities for Nerves devices
Current section
Files
Jump to
Current section
Files
lib/nerves_runtime/output_logger.ex
defmodule Nerves.Runtime.OutputLogger do
@moduledoc false
defstruct [:level]
@type t :: %__MODULE__{level: Logger.level()}
@spec new(Logger.level()) :: t()
def new(level) do
%__MODULE__{level: level}
end
defimpl Collectable do
@spec into(Nerves.Runtime.OutputLogger.t()) ::
{nil,
(nil, :done | :halt | {:cont, binary} ->
nil | Nerves.Runtime.OutputLogger.t())}
def into(%{level: level} = stream) do
{nil, log_fn(stream, level)}
end
defp log_fn(stream, level) do
fn
nil, {:cont, logs} ->
logs
|> String.split("\n")
|> Enum.each(&Logger.bare_log(level, fn -> String.trim(&1) end))
nil
nil, :halt ->
nil
nil, :done ->
stream
end
end
end
end