Erlang日志系统

error_logger开启后,默认通过erlang:display/1输出日志,kernel应用启动时会调整日志输出方式,默认会调整为控制台输出。见源码:kernel:start/2

其中Type可在启动erl时设置:-kernel error_logger Type。Type 可选择以下几种类型 tty,{file,File},false,silent,默认为tty。

error_logger:swap_handler(Type)切换日志处理方式。

tty:直接在控制台中打印消息,error_logger_tty_h中定义了具体的处理方式。
{file,File}:把日志写入到文件File中,error_logger_file_h中定义了具体的处理方式。
false:什么也不做,保持原有的日志设置,还会有 erlang:display输出。
silent 删除日志事件处理模块error_logger,不会有任何日志输出。

error_logger:start/0启动时,调用simple_logger/1,把打印日志的输出方式设置为erlang:display/1,

simple_logger/0,simple_logger/1的区别:simple_logger/0只添加error_logger handler,不做任何输出,simple_logger/1,则会做erlang:displayer输出。

simple_logger/0初始化error_logger时,会把State设置为[],simple_logger/1则会把State设置为[BuffSize,0,[]]。当收到日志消息时,事件error_logger会最终由error_logger:handle_event2/2处理。

simple_logger/0对应的handler只会匹配到handle_event2(_, State),所以不会有日志输出,simple_logger/1则会匹配到前面二个函数,所以会有日志输出。

不同的erl启动方式:

项目https://github.com/kqqsysu/logger,自定义了日志系统。通过动态编译模块,可以根据不同生产环境,设置不同的日志输出级别。并且缓存日志到日志字典中延时输出,可支持5000/s以上的并发请求。

Erlang技术分享内容均为原创,转载请标明本文地址
本文链接:http://www.kongqingquan.com/archives/198

此条目发表在Erlang分类目录,贴了, , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">