1-4.日志库lager
1.lager的使用
可以使用 lager:log/3 lager:log/4 lager:log/5
来打印log, 但是这样要填的参数很多,不太方便,而且对于日志等级不够一目了然
所以官方给出了一种更便捷的方法
在rebar.config里 erl_otps 加入 {parse_transform, lager_transform}
这样可以直接使用lager:info/2
进一步优化,把lager:info/2 在utils.hrl 中定义成常量
使用示例:
use_lager() -> Ver = 21.3, ?INFO("hello erlang ~p~n", [Ver]).
2.lager的日志等级
-define(DEBUG, 128).
-define(INFO, 64).
-define(NOTICE, 32).
-define(WARNING, 16).
-define(ERROR, 8).
-define(CRITICAL, 4).
-define(ALERT, 2).
-define(EMERGENCY, 1).
-define(LOG_NONE, 0).
可以自行根据需求定义使用场景
3.修改默认输出格式
{formatter, lager_default_formatter},
{formatter_config, [time," [",severity,"] ", message, "1",sev, "1","\n"]}
可在formatter_config后自行定义输出日志的默认格式
可用参数有:
date, time, message, sev and severity(sev是日志等级缩写字母)
pid, file, line, module, function, and node
4.过载保护
lager提供了几个过载保护的选项,可以根据实际情况调整
{async_threshold, 20} 当超过20条日志待处理时使用同步,降低磁盘压力
{async_threshold_window, 5} 低于20-5条日志待处理使用异步,提高写日志速度
{killer_hwm, 1000}, 当超过1000条日志待处理时,kill整个日志池,并在5000毫秒后重启
{killer_reinstall_after, 5000}
浙公网安备 33010602011771号