0

当我使用 shell 启动我的应用程序时,我看到所有 error_logger 报告两次。

一个版本的格式与 with 类似,~p还有一个格式很好的版本:

{info_report,<0.48.0>,
             {<0.425.0>,std_info,
              [{chan,ser_200},
               usb_port,send,
               {data,"6d e1 00 00 00 04 00 00 06 8f"}]}}

=INFO REPORT==== 8-Apr-2011::16:43:24 ===
    chan: ser_200
    usb_port
    send
    data: "6d e1 00 00 00 04 00 00 06 8f"

我怎样才能摆脱这个多余的显示?

为了澄清,我想在屏幕上看到的只是:

=INFO REPORT==== 8-Apr-2011::16:43:24 ===
    chan: ser_200
    usb_port
    send
    data: "6d e1 00 00 00 04 00 00 06 8f"

我不是在问是否将其写入文件。 这已经用mf记录器完成了。

我要改进的是屏幕上的实时显示。

我正在像这样启动 Erlang:

erl +W w -boot start_sasl -config myconfig ...

应用程序配置文件如下所示:

[{sasl, [
    {sasl_error_logger, tty},   
    {error_logger_mf_dir,"./log"},  
    {error_logger_mf_maxbytes,10485760}, % 10 MB
    {error_logger_mf_maxfiles, 10}]}].
4

1 回答 1

2

才发现:

在我自己的一个错误处理程序中,有一个被忽略的 catch all 子句,该处理程序从古代遗留在另一个项目中:

handle_event(Event, State) ->
    io:format("~p\n", [Event]),

这会导致~p类似的输出......因为我正在使用~p.

一旦我删除了io:format/2电话,双重打印就消失了。

于 2011-04-08T15:16:06.427 回答