Current section
Files
Jump to
Current section
Files
src/serverless_logger_std.erl
%%
%% Copyright (C) 2018 Dmitry Kolesnikov
%%
%% This file may be modified and distributed under the terms
%% of the MIT license. See the LICENSE file for details.
%% https://github.com/fogfish/serverless
%%
-module(serverless_logger_std).
-behaviour(gen_event).
-export([
start/0,
stop/0,
init/1,
terminate/2,
handle_event/2,
handle_call/2
]).
start() ->
error_logger:tty(false),
error_logger:add_report_handler(?MODULE).
stop() ->
error_logger:delete_report_handler(?MODULE).
init(_) ->
{ok, undefined}.
terminate(_, _) ->
ok.
handle_event({error_report, _, {Pid, Type, Msg}}, State) ->
log(Type, Pid, Msg),
{ok, State};
handle_event({warning_report, _, {Pid, Type, Msg}}, State) ->
log(Type, Pid, Msg),
{ok, State};
handle_event({info_report, _, {Pid, Type, Msg}}, State) ->
log(Type, Pid, Msg),
{ok, State};
handle_event({error, _, {Pid, Format, Data}}, State) ->
log(error, Pid, erlang:iolist_to_binary(io_lib:format(Format, Data))),
{ok, State};
handle_event({warning_msg, _, {Pid, Format, Data}}, State) ->
log(warning, Pid, erlang:iolist_to_binary(io_lib:format(Format, Data))),
{ok, State};
handle_event({info_msg, _, {Pid, Format, Data}}, State) ->
log(info, Pid, erlang:iolist_to_binary(io_lib:format(Format, Data))),
{ok, State};
handle_event(_, State) ->
{ok, State}.
handle_call(_, State) ->
{noreply, State}.
log(emergency, Pid, Msg) ->
serverless_logger:log(emergency, Pid, Msg);
log(alert, Pid, Msg) ->
serverless_logger:log(alert, Pid, Msg);
log(critical, Pid, Msg) ->
serverless_logger:log(critical, Pid, Msg);
log(error, Pid, Msg) ->
serverless_logger:log(error, Pid, Msg);
log(warning, Pid, Msg) ->
serverless_logger:log(warning, Pid, Msg);
log(notice, Pid, Msg) ->
serverless_logger:log(notice, Pid, Msg);
log(info, Pid, Msg) ->
serverless_logger:log(info, Pid, Msg);
log(debug, Pid, Msg) ->
serverless_logger:log(debug, Pid, Msg);
log(_, _, _) ->
ok.