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

acruukt9  于 2022-12-08  发布在  Erlang
关注(0)|答案(2)|浏览(275)

根据Erlang文档,可以仅为文件配置记录器:
来自Erlang文档:
修改默认处理程序以打印到文件而不是standard_io:

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

我的配置文件如下所示:

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

i.o.与文档中的完全相同。日志级别设置为error
当我使用reabar3 shellstat应用程序时,以下内容打印到控制台:

===> 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}]

因此,OTP进度消息重定向到文件,但仍打印到控制台,并且文件erlang.log为空。
如何禁用控制台输出并将所有消息重定向到文件?
P.S. Erlang版本:

Erlang/OTP 21 [erts-10.3.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
z0qdvdin

z0qdvdin1#

战斗了一会后我发现了一个问题:

  • 如果参数错误,Logger不会创建文件。
  • 文档似乎不完整

[{内核,[{记录器,[{处理程序,默认,记录器_std_h,% {处理程序,处理程序ID,模块,配置} #{配置=〉#{文件=〉“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

u0njafvf

u0njafvf2#

就像这样:

{logger, [
{handler,default,undefined}
]}

相关问题