【问题标题】:How to terminate gen_server gracefully without crash report如何在没有崩溃报告的情况下优雅地终止 gen_server
【发布时间】:2017-10-28 19:12:52
【问题描述】:

在我的 gen_server 中,我像这样终止它:

handle_info({'EXIT', _From, _Reason}, State) ->
    {stop, partner_fled, State};

但仍然记录器将其打印为错误

14:56:43.349 [error] gen_server <0.3290.0> terminated with reason: partner_fled
14:56:43.349 [error] CRASH REPORT Process <0.3290.0> with 0 neighbours exited with reason: partner_fled in gen_server:terminate/7 line 812

代码按预期工作,但我不希望记录器将其打印出来,因为它是一个优雅的终止。

顺便说一句,我使用的是啤酒,但我认为删除它只会改变日志记录的格式。

【问题讨论】:

    标签: erlang erlang-otp lager


    【解决方案1】:

    来自the manual

    请注意,由于normalshutdown{shutdown,Term} 以外的任何其他原因,假定gen_server 进程因错误而终止,并使用error_logger:format/2 发出错误报告。

    因此,如果您不希望打印任何错误报告,您可以将原因更改为 normalshutdown,或者如果您还想返回自定义术语,{shutdown, Term}

    handle_info({'EXIT', _From, _Reason}, State) ->
        {stop, {shutdown, partner_fled}, State};
    

    【讨论】:

      猜你喜欢
      • 2014-06-01
      • 2022-08-17
      • 2016-06-17
      • 2014-10-30
      • 1970-01-01
      • 2022-12-11
      • 2018-09-05
      • 1970-01-01
      • 2012-03-24
      相关资源
      最近更新 更多