error logger本质上是一个事件管理器 (gen_event),可以根据需求绑定替换新的事件处理器。
只需要几条特定的几条message进行处理,就可以方便的扩展一个error_logger事件处理器。
error_logger进程启动后,默认绑定一个error_logger的handler。
这里有一个细节就是group_leader的概念(后面我会写篇文章详细介绍),error_logger默认处理器同时将事件传递到group_leader所在
的节点上,这样就隐藏了本地和跨节点log的细节。
在stdlib中有两个模块error_logger_tty_h和error_logger_file_h 是系统内部的事件处理器。
error_logger_tty_h负责控制台输出的处理器,通过error_logger:tty/1 进行管理
error_logger_file_h负责文件输出的处理器, 通过error_logger:logfile/1 进行管理
很多logger系统都在此基础上添加自己事件处理器(如sasl, lager等)对消息进行拦截加工处理。