erlang错误\u记录器处理程序意外消失

erlang错误\u记录器处理程序意外消失,erlang,mochiweb,Erlang,Mochiweb,我有一个基于mochiweb的应用程序。 我在启动应用程序时指定了-kernelerror\u logger'{file,mylog.log}',运行一段时间后,error\u logger将不会输出任何内容。 当应用程序启动时 sys:get_status(EPID). {status,<0.5.0>, {module,gen_event}, [[{'$ancestors',[<0.2.0>]}, {'$initial

我有一个基于mochiweb的应用程序。 我在启动应用程序时指定了-kernelerror\u logger'{file,mylog.log}',运行一段时间后,error\u logger将不会输出任何内容。 当应用程序启动时

sys:get_status(EPID).
{status,<0.5.0>,
        {module,gen_event},
        [[{'$ancestors',[<0.2.0>]},
          {'$initial_call',{gen_event,init_it,6}}],
         running,<0.2.0>,[],
         [{header,"Status for event handler error_logger"},
          {data,[{"Status",running},{"Parent",<0.2.0>}]},
          {items,{"Installed handlers",
                  [{handler,sasl_report_tty_h,false,all,false},
                   {handler,error_logger,false,[],false},
                   {handler,error_logger_file_h,false,
                            {<0.35.0>,"mylog.log",error_logger},
                            false}]}}]]}
过了一段时间

sys:get_status(EPID).
{status,<0.5.0>,
        {module,gen_event},
        [[{'$ancestors',[<0.2.0>]},
          {'$initial_call',{gen_event,init_it,6}}],
         running,<0.2.0>,[],
         [{header,"Status for event handler error_logger"},
          {data,[{"Status",running},{"Parent",<0.2.0>}]},
          {items,{"Installed handlers",
                  [{handler,sasl_report_tty_h,false,all,false},
                   {handler,error_logger,false,[],false}]}}]]}

错误日志文件丢失。为什么?

对于任何基于gen_事件的事件(如错误日志),需要注意的是,如果任何回调导致异常,事件处理程序将被静默删除。可以通过使用terminate回调或添加受监督的事件处理程序来确保收到通知。但是,这些解决方案在error_logger中都不可用。因此,如果您必须依赖当前的处理程序,那么使用其他日志框架或滚动自己的日志框架可能是最好的解决方案。

错误日志:信息报告为我解决了问题。您是否考虑过使用basho的lager而不是默认的错误日志?它更适合于网络应用程序。