例子

将错误消息输出到终端的事件处理器的回调模块可以这样写:

  1. -module(terminal_logger).
  2. -behaviour(gen_event).
  3.  
  4. -export([init/1, handle_event/2, terminate/2]).
  5.  
  6. init(_Args) ->
  7. {ok, []}.
  8.  
  9. handle_event(ErrorMsg, State) ->
  10. io:format("***Error*** ~p~n", [ErrorMsg]),
  11. {ok, State}.
  12.  
  13. terminate(_Args, _State) ->
  14. ok.

将错误消息写入到文件的事件处理器的回调模块可以是:

  1. -module(file_logger).
  2. -behaviour(gen_event).
  3.  
  4. -export([init/1, handle_event/2, terminate/2]).
  5.  
  6. init(File) ->
  7. {ok, Fd} = file:open(File, read),
  8. {ok, Fd}.
  9.  
  10. handle_event(ErrorMsg, Fd) ->
  11. io:format(Fd, "***Error*** ~p~n", [ErrorMsg]),
  12. {ok, Fd}.
  13.  
  14. terminate(_Args, Fd) ->
  15. file:close(Fd).

这些代码将在下一节中解释。