Erlang OTP 21如何禁用记录器控制台输出

时间:2019-04-10 13:25:27

标签: erlang otp

根据erlang文档,可以仅将记录器配置为仅文件:

来自Erlang Documentation:

修改默认处理程序以打印到文件而不是standard_io:

StompSessionHandlerAdapter

我的配置文件如下:

[{kernel,
[{logger,
  [{handler, default, logger_std_h,  % {handler, HandlerId, Module,Config}
    #{config => #{file => "log/erlang.log"}}}
]}]}].

i.o。与文档中的完全相同。  日志级别设置为错误

当我使用 reabar3 shell 统计应用程序时,将以下信息打印到控制台中:

 [{kernel,[
  {logger_level, error},
  {logger,
    [{handler, default, logger_std_h,
      #{config => #{file => "log/erlang.log"}}}
    ]
   }
  ]}].

因此,OTP进度消息不会重定向到文件,但仍会打印到控制台,并且文件 erlang.log 为空。

如何禁用控制台输出并将所有消息重定向到文件?

P.S。 Erlang版本:

===> The rebar3 shell is a development tool; to deploy applications in production, consider using releases (http://www.rebar3.org/docs/releases)
2019-04-10T15:14:33.363287+02:00 info: application: syntax_tools, started_at: 'node@x201'
2019-04-10T15:14:33.371897+02:00 info: application: compiler, started_at: 'node@x201'
2019-04-10T15:14:33.379962+02:00 info: supervisor: {local,gr_sup}, started: [{pid,<0.1181.0>},{id,gr_counter_sup},{mfargs,{gr_counter_sup,start_link,[]}},{restart_type,permanent},{shutdown,5000},{child_type,supervisor}]
2019-04-10T15:14:33.382379+02:00 info: supervisor: {local,gr_sup}, started: [{pid,<0.1182.0>},{id,gr_param_sup},{mfargs,{gr_param_sup,start_link,[]}},{restart_type,permanent},{shutdown,5000},{child_type,supervisor}]

1 个答案:

答案 0 :(得分:2)

战斗了一段时间后,我发现了一个问题:

  • 如果输入了错误的参数,则Logger不会创建文件。
  • 好像文档不完整

    [{内核, [{logger, [{处理程序,默认值,logger_std_h,%{处理程序,HandlerId,模块,配置}    #{config =>#{file =>“ log / erlang.log”}}} ]}]}]。

    {config =>#{file =>“ log / erlang.log”}}

应更改为:

#{config =>#{type => {file =>“ log / erlang.log”}}}}

 [{kernel,
 [{logger,
  [{handler, default, logger_std_h,  % {handler, HandlerId, Module,Config}
   #{config => #{ type => {file => "log/erlang.log"}}}}
]}]}].

此处:Complete example of logger configuration file