[ {eLog, [ %% ******************************************** 颜色打印相关 ***************************************************** %% 是否开启颜色 {colored, true}, %% 颜色码配置 {colors, [ {debug, <<"\e[0;38m">>}, {info, <<"\e[1;37m">>}, {notice, <<"\e[1;36m">>}, {warning, <<"\e[1;33m">>}, {error, <<"\e[1;31m">>}, {critical, <<"\e[1;35m">>}, {alert, <<"\e[1;44m">>}, {emergency, <<"\e[1;41m">>} ]}, %% ********************************************** 日志文件配置相关 ************************************************ %% 可选的日志路径, 默认情况下是当前路径 {logRoot, <<"./log">>}, %%*********************************************** handler与接收器(sink) and traces ****************************** %% 消息处理模块可以存在多个,[{SinkModule, [lgConsoleOpt() | lgFileOpt()]}]=Handler() 消息处理模块可以存在多个 %% eg: {handlers, [ %% {lgBkdFile, [{id, console}, {file, "console.log"}, {level, info}]}, %% {lgBkdFile, [{id, error}, {file, "error.log"}, {level, error}]}, %% {lgBkdConsole, [{level, info}]} %% ]} {handlers, [ {lgBkdConsole, [{level, '>=debug'}]}, {lgBkdFile, [{id, debug}, {file, <<"console.log">>}, {level, '>=debug'}, {size, 10485760}, {date, <<"$D0">>}]}, {lgBkdFile, [{id, info}, {file, <<"info.log">>}, {level, '>=info'}, {size, 10485760}, {date, <<"$D0">>}]}, {lgBkdFile, [{id, error}, {file, <<"error.log">>}, {level, '>=error'}, {size, 10485760}, {date, <<"$D0">>}]} ]}, %% 额外的接收器列表 [{SinkName, [{handlers, Handler()}|{asyncThreshold, 500}|{asyncThrWindow, 50}|{killerHwm, 1000}|{killerReTime, 5000}]}] %% eg: {extraSinks, [ %% {auditEvent,[{handlers, [{lgBkdFile, [{file, "audit.log"}, {level, info}]}]}, {asyncThreshold, 500}, {asyncThrWindow, 50}]} %% ]}} {extraSinks, []}, %% traces列表 [{handler, [Handler()]}] %%eg: {traces, [ %% handler, filter, message level (defaults to debug if not given) %% {lgBkdConsole, [{module, foo}], info}, %% {{lgBkdFile, "trace.log"}, [{request, '>', 120}], error}, %% {{lgBkdFile, "event.log"}, [{module, bar}]} %% implied debug level here %% ]} {traces, []}, %%*********************************************** 异步日志相关 ***************************************************** %% 异步切换到同步时模式gen_emm邮箱的最大消息数,此值仅应用于默认接收器; 额外的接收器也可以自己配置。 %% 格式 integer() | undefined 当值为undefined 禁用此功能 {asyncThreshold, undefined}, %%当gen_emm 邮箱大小从 asyncThreshold 减小到 asyncThreshold-asyncThrWindow 时,切换回异步模式。当值为undefined时, 最终使用的是asyncThreshold * 0.2 %% 此值仅适用于默认接收器。额外的接收器需要选项中配置。 {asyncThrWindow, undefined}, %% ********************************************** killer相关 **************************************************** %% 如果接收器的邮箱大小超过1000条消息,请杀死整个接收器并在5000毫秒后重新加载它。如果需要,此行为也可以安装到其他接收器中。 %% 格式 integer() | undefined 当值为undefined 禁用此功能 {killerHwm, 1000}, %% 参见killer_hwm {killerReTime, 5000}, %% ******************************************** format相关 ****************************************************** %% 元数据名单列表 {mdWhitelist, []}, %% crash log cfg %% 有效值 string | false 值为 false 的时候 没有 crash logger. {crashLogFile, <<"crash.log">>}, %%崩溃日志中事件的最大大小(以字节为单位)-默认为65536 {crashLogMsgSize, 65536}, %% 崩溃日志的最大大小(以字节为单位),在旋转之前,设置为0以禁用旋转-默认值为0 {crashLogFileSize, 0}, %% 什么时间轮换崩溃日志-默认为无时间轮换。有关此格式的说明,请参见自述文件。 {crashLogDate, <<"$D0">>}, %% 要保留的已轮转崩溃日志的数量,0表示仅保留当前的一个-默认值为0 {crashLogCount, 0}, %% 崩溃日志旋转器模块-默认为lgRotatorIns {crashLogRotator, lgRotatorIns}, %% ********************************************** error_logger相关 ********************************************** %% 是否将error_logger消息重定向到默认的eLog_event接收器-默认为true {errLoggerRedirect, true}, %% 列表中的handler 不会从error_logger handler列表中移除 {errLoggerWhitelist, []}, %% 每秒允许来自error_logger的消息数量是多少 超过就丢弃掉 值为undefined禁止抛弃 {errLoggerHwm, undefined}, %% errLogger group leader策略 handle | ignore | mirror {errLoggerGLS, handle}, %%是否禁止 disable reformatting for OTP and Cowboy messages false表示会格式化OTP和Cowboy的错误信息 {errLoggerFmtRaw, false}, %% 超过高水位标记时,可以配置为刷新消息队列中的所有事件通知 {errLoggerFlushQueue, true}, %% 如果flush_queue为true,则可以设置消息队列缓存阈值,消息队列中消息数量超过该阈值处将开始丢弃消息。默认阈值为0,这意味着如果flush_queue为true, %% 则超过高水位标记时将丢弃消息,而不管消息队列的长度如何。 {errLoggerFlushThr, 20}, %% ********************************************** app启动停止监听相关 ********************************************* %% 是否不在应用程序的调试级别看到主管和应用程序启动/停止日志 {suppressAppStartStop, false}, {suppressSupStartStop, false} ]} ].