Logger.Config
:sync_threshold - ifthe Logger manager has more than
sync_threshold messages in its queue, Logger will change to sync
mode, to apply backpressure to the clients.
• ログメッセージのイベントを受信
• → メッセージキューの長さをみて動的に同期・非同期を変更
OTPエラー出力の抑止
config :logger, handle_otp_reports:false
# 手動でerror_loggerからハンドラを削除
:error_logger.delete_report_handler(:error_logger_tty_h)
# mariaex: v0.4.3
_pid = case Mariaex.Connection.start_link(username: "ecto", database: "ecto_test") do
{:ok, pid} -> pid
{:error, err} ->
IO.puts err.mariadb.message
exit(1)
end
33.
おまけ: 雑カスタムBackend
defmodule MyBackenddo
use GenEvent
def init(__MODULE__) do
init({:user, []})
end
def init({device, _opts}) do
config = Application.get_env(:logger, :my_backend, [])
format = Keyword.get(config, :format) |> Logger.Formatter.compile
level = Keyword.get(config, :level, :info)
metadata = Keyword.get(config, :metadata, [])
{:ok, %{format: format, metadata: metadata,
level: level, colors: %{}, device: device}}
end
34.
おまけ: 雑カスタムBackend
def handle_call({:configure,_options}, state) do
{:ok, :ok, state}
end
def handle_event({_level, gl, _event}, state)
when node(gl) != node() do
{:ok, state}
end
def handle_event({level, _gl, {Logger, msg, _ts, _md}}, state) do
IO.inspect [level, msg]
{:ok, state}
end
end