Erlang OTP 21 Как отключить вывод консоли логгера - PullRequest
2 голосов
/ 10 апреля 2019

Согласно документации 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. точно так же, как в документации. с уровнем журнала, установленным на ошибка

Когда я оцениваю приложение, используя оболочку reabar3 , в консоли выводится следующее:

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

1 Ответ

2 голосов
/ 12 апреля 2019

Через некоторое время я обнаружил проблему:

  • В случае неправильного параметра Logger просто не создает файл.
  • Похоже, документация неполная

    [{ядро, [{Регистратор, [{обработчик, по умолчанию, logger_std_h,% {обработчик, 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"}}}}
]}]}].

Здесь: Полный пример файла конфигурации регистратора

...