首页 > 解决方案 > erlang logger 不显示进度报告

问题描述

我是日志记录的新手,我在 erlang/OTP 21 中尝试了 erlang new logger API,所以我编写了一个简单的代码来创建自定义处理程序:

-module(loggertest).
-export([start/0,doError/2]).
%%%%%%
start() ->
HandlerFile="/Erlang/informations.log",
HandlerConfig=# {max_no_bytes=>10*1024*1024,
 max_no_files=>1,
 file=>HandlerFile},
FormatConfig=#{single_line=>false,
               legacy_header=>true},
TheHandler=#{level=>info,
             config=>HandlerConfig,
             formatter=> {logger_formatter,FormatConfig}},
logger:set_handler_config(default,level,error),
logger:set_primary_config(level,info),
logger:add_handler(the_handler,logger_std_h,TheHandler).
%%%%%%
doError(X,Y) ->
logger:error(#{x=X,y=Y}).

所以我编译它并调用

loggertest:start().
loggertest:doError(4,5).

我检查了“informations.log”文件,发现只有错误报告

x=4
y=5

并且有任何进度报告,以及何时删除

logger:set_handler_config(default,level,error)

我在终端中有进度报告,所以我一无所知:对 的调用logger:set_handler_config/3将停止默认记录器以捕获优于错误事件的事件,因此进度报告(信息事件)将永远不会由默认记录器处理,默认记录器会将它们放在格式化后的标准 I/O,在这里我希望这些报告将由 TheHandler 处理,因为它具有信息级别但没有发生任何事情,为什么?

标签: loggingerlangelixirejabberderlang-otp

解决方案


推荐阅读