lager trace file的流程和实现分析

tracing是跟踪的意思,在lager中指的是跟踪用户打印的日志,根据属性做日志消息的重定向,如果没有tracing,那么lager没法做到按模块打印日志。

调用 lager:trace_file("logs/trace.log", [{module, myModule}], error),表明 myModule 模块中的日志打印语句,级别在error之上的日志,都会被保存到文件trace.log中。

第一个参数是文件名;第二个参数是filter过滤器,可以包括自定义属性;第三个是拦截的日志级别。

内部,tracing 的实现利用了整体的监督树结构,每一个trace file都对应一个lager_event处理器,都对应一个lager_event_watcher子进程

下面分析 lager:trace_file("logs/trace.log", [{vhost, "example.com"}], error) 调用的完整流程和实现细节

入口:trace_file(File, Filter, Level)

1、生成元组,{Filter, Level, {lager_file_backend, File}}
2、调用 lager_util:validate_trace 验证生成的元组,主要是验证filter,返回 {Filter, LevelMask, {lager_file_backend, File}},LevelMask是level的掩模
3、验证事件处理器{lager_file_backend,"logs/trace.log"}是否存在;lager_event区分事件处理器,特别是同一个回调模块的多个处理器,是通过{lager_file_backend, ID},ID使用文件名
4、如果不存在,则添加事件处理器
5、并且,添加 Trace={Filter, LevelMask, {lager_file_backend, File}} 到 ets 表 lager_config中;key 是 loglevel,value是 {MinLevel, [Trace|Traces]},MinLevel是所有事件处理器最小的日志级别的掩模

转载于:https://my.oschina.net/astute/blog/118145

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值