Erlang OTP 21 如何禁用记录器控制台输出
Erlang OTP 21 How to disable logger console output
根据 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 统计应用程序时 shell 以下打印到控制台:
===> 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/OTP 21 [erts-10.3.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
折腾了一段时间发现问题:
- 如果参数错误,Logger 只是不创建文件。
文档似乎不完整
[{内核,
[{记录器,
[{handler, default, logger_std_h, % {handler, HandlerId, Module,Config}
#{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"}}}}
]}]}].
根据 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 统计应用程序时 shell 以下打印到控制台:
===> 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/OTP 21 [erts-10.3.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
折腾了一段时间发现问题:
- 如果参数错误,Logger 只是不创建文件。
文档似乎不完整
[{内核, [{记录器, [{handler, default, logger_std_h, % {handler, HandlerId, Module,Config} #{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"}}}}
]}]}].