-module(event_handler).
-export([make/1, add_handler/2, event/2]).
make(Name) -> register(Name, spawn(fun() -> my_handler(fun no_op/1) end)).
add_handler(Name, Fun) -> Name ! {add, Fun}.
event(Name, X) -> Name ! {event, X}.
my_handler(Fun) ->
receive
{add, Fun1} ->
my_handler(Fun1);
{event, Any} ->
(catch Fun(Any)),
my_handler(Fun)
end.
no_op(_) -> void.
-module(motor_controller).
-export([add_event_handler/0]).
add_event_handler() ->
event_handler:add_handler(errors, fun controller/1).
controller(too_hot) ->
io:format("Turn off the motor ~n");
controller(X) ->
io:format("~w ignored event: ~p~n", [?MODULE, X]).
erl -boot start_sasl
[{sasl}, [
{sasl_error_logger, false},
{errlog_type, error},
{error_logger_mf_dir, "/home/joe/error_logs"},
{error_logger_mf_maxbytes,10485760},
{error_logger_mf_maxfiles, 10}
]].
日志分析 rb:grep(RegExp)
应用程序监视器 图像界面 shell中 appmon:start().
阅读(280) | 评论(0) | 转发(0) |