Lager输出成html格式的日志
简介
lager是erlang和exlir的一个日志库,输出格式支持自定义,可以通过额外插件扩展将日志输出成html格式,这样异常日志从颜色上就可以明显的看出来,方便调试
使用
库已经上传了hex库,可以通过以下3种方式中任一使用
- mix 中加入
{:lager_html, "~> 0.0.1"}
- rebar.config 的deps 中加入
{lager_html, "0.0.1"}
- erlang.mk 中加入
dep_lager_html = hex 0.0.1
如果hex下载失败,按照rebar.config中的deps格式从github上直接下载
GitHub链接
配置了依赖后,需要修改一些环境变量配置
可以选择直接将以下内容加入到src/lager.app.src 的env字段中
也可以加入到自己项目的 env文件中
[
{log_root, "./log"},
{handlers, [
{lager_file_backend,
[
%% 日志文件前缀,全名是 File++Date.html
{file, "error_log"},
%%debug=128, info=64, notice=32, warning=16, error=8, critical=4, alert=2, emergency=1, none=0
{level, info},
{formatter, lager_log_html_formatter},
%% 字符串格式,可选值,使用lager_log_html_formatter后默认模板会改成以下内容
%% {formatter_config, ["<div><font size=\"2\" color=", html_color, ">\n== ", date, " ",
%% time, " ===", sev, "(", pid, module, ":", function, ":", line, ") : ", message, "\n</font></div>"]},
%% 每天生成新日志文件,最多保留30个
{date, "$D0"},
{count, 30},
{rotator, lager_log_html_rotator}
]}
]},
%% error_logger重定向
{error_logger_redirect, true},
%% crash_log
{crash_log, "crash.log"}, %% crash.log文件名
{crash_log_count, 5}, %% 最多保存5个crash.log文件
{crash_log_date, "$Ml"} %% 每月最后一天生成一个新的crash.log
%% html染色,替换lager_log_html_formatter提供的模板中的html_color字段,可选值,默认值如下
%% {html_colors, [
%% {error, "\"#FF0000\""},
%% {warning, "\"#FFCC33\""},
%% {debug, "\"#00FFD2\""},
%% {info, "\"#00FF00\""},
%% {critical, "\"#6C2A6D\""}]}
]
也可以选择在启动参数里加入 -config xx.config xx.config中的内容 {lager, KV}.
或者在rebar.config中加入get-deps的hook,在每次拉取下来的时候重新修改lager的 lager.app.src中的默认环境变量
不推荐在代码中调用application:set_env来实现,因为lager.app.src中会覆盖之前的内容,而且lager很多参数都是启动时生效,后续不能修改
测试
在rebar.config 的erl_opts 中加入{src_dirs, ["src", "test"]}
编译
在项目目录下执行erl -pa ebin deps/lager/ebin deps/goldrush/ebin -config test/lager_html_test.config
执行 lager_html_test:test().
log目录下就会生成对应的日志文件
扩展
也可以仿照lager_log_html_formatter和lager_log_html_rotator写两个类似的模块放到自己的工程项目中,
项目本身并没有其他扩展