lager代码解析

lager是目前唯一的三方log库,除了erlang自带的logger库,没有太多其他选择
1.lager_sup
    动态启动一个gen_event(lager_event)
    启动lager_handle_watcher_sup
 
2.当lager的配置中写了一条handle时,
    先在lager_handle_watcher_sup中起一个子进程lager_handle_watcher
    然后在这个子进程中add_sup_handle,在lager_event里添加一个handle
    
3.当有消息发送来时,分发到lager_event的各个handle中处理
 
 
4.lager_event分很多种类型:
lager_backend_throttle     消息流控(同步和异步切换)
{async_threshold, 20}                       当超过20条日志待处理时使用同步,降低磁盘压力
{async_threshold_window, 5}           低于20-5条日志待处理使用异步,提高写日志速度
根据这两条配置来控制,自动启动
        
lager_file_backend             写入文件
根据配置handlers生成
 
lager_console_backend     打印在控制台
根据配置handlers生成
 
lager_manager_killer         消息流控(是否杀死)
{killer_hwm, 1000},                            当超过1000条日志待处理时,kill整个日志池,并在5000毫秒后重启
{killer_reinstall_after, 5000}
根据这两条配置来控制,自动启动
 
error_logger_lager_h         记录错误日志
注意,error_logger_lager_h不接收lager_event分发的消息,只有其他地方出错时才会发送消息到此。自动启动
 
 
posted @ 2020-06-09 14:47  feapoi  阅读(393)  评论(0)    收藏  举报