Lager库的Trace功能使用

本文详细介绍了Erlang库Lager的Trace功能,包括日志重定向、过滤器、多接受器、Trace配置等,强调了如何在生产环境中有效利用Trace功能进行问题定位,同时避免对性能造成影响。
摘要由CSDN通过智能技术生成

简介

Lager的trace功能十分强大,在生产环境中,我们需要使用日志来配合定位问题,而如果只是单纯的使用日志等级来控制,在日志量非常大的时候可能会有性能负担,同时日志文件也难以查找,使用trace可以清晰的筛选我们想要的日志,且不影响其他日志逻辑

日志重定向

Lager支持简单的根据日志的属性来将日志内容进行重定向,每条Lager生成的日志都带了pid, module, function ,line ,除此之外,也可以在生成日志的时候进行扩展

lager:warning([{request, RequestID},{vhost, Vhost}], "Permission denied to ~s", [User])

第一个字段填入tupleList可以给日志消息增加额外属性,可供后续Trace的时候进行筛选
如果使用pid进行筛选的时候,pid字段使用字符串进行表述

lager:trace_console([{pid, "<0.410.0>"}])

加入属性后就可以根据属性进行筛选跟踪

lager:trace_file("logs/example.com.error", [{vhost, "example.com"}], error)
  • Trace调用的三参,也就是日志等级,是可选参数,如果没有填充,默认为debug等级
  • Trace本身和原生的日志逻辑没有直接关系,你可以在日志等级是error的情况下,trace一条debug的日志,第一个参数是日志重定向的文件,第二个参数是筛选消息的条件,第三个为日志等级
  • Trace消息并不会影响原本的日志打印,不会因为Trace少掉日志消息或者增加了日志

除了通过调用双参日志接口给日志增加属性外,还可以在进程内调用lager:md/1存储属性,所有该进程生成的日志都会携带md设定的属性,这在你有多个工作进程的时候会非常有用,日志进行运行的代码相同,但是你可以通过设定工作进程的属性将用户id写到日志属性中,之后就可以使用用户id对日志进行重定向,这在生产环境下将会非常有用
lager:md/1每次调用都会覆盖之前的内容,并且不提供置空函数,因此最好不要让属性太过复杂,或者自己在进程逻辑中进行管理,md的参数是键值是atom的TupleList

lager:md([{zone, forbidden}])

同样可以在命令行中进行日志跟踪

lager:trace_console([{request, 117}])

如果需要限定日志等级,可以加入二参表示要跟踪的日志等级
要注意的是debug这种日志

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值