日志系统。

一、SASL

 

SASL全称System Architecture Support Libraries,提供如下几个服务:

alarm_handler

overload

rb

release_handler

systools

SASL带有error_logger的事件处理句柄用于格式化SASL错误和crash报告,这些句柄如下:

sasl_report_tty_h   sasl_report_file_h   error_logger_mf_h

细节参考OTP文档可知。

SASL的默认event handler会将crash报告、supervisor和进程报告输出到控制台,如果你希望看到这些信息,那么在erlang启动时需要加上指定的参数以启动sasl

为了方便日志的查看,通常sasl和其他日志是分开输出的,可以在启动erl时使用如下命令行参数:

-sasl sasl_error_logger {file,"/data/ log/sasl.log"}

二、ejabberd的日志系统。

它包含两个部分:

dynamic_compile.erl   动态编译基础模块

ejabberd_logger_h.erl  这是个gen_event behavior模块,可以定制我们写日志的行为

ejabberd_loglevel.h    这个是ejabberd日志系统的精华,可以在运行时动态调节日志的输出级别。

 

用法很简单:

error_logger:add_report_handler(ejabberd_logger_h, LogPath),

ejabberd_loglevel:set(4) //级别4是info日志

原理很简单,利用code模块的load_binary来实现动态代码替换,但是确实非常强大,可以在需要的时候打开某些特定级别的日志,在系统负载高的时候或者不需要的时候关闭它。

三、

log4erl

四、

lager

五、

mslog:仅供参考,https://github.com/qingliangcn/mslog.

原文地址:https://www.cnblogs.com/ribavnu/p/3784636.html