<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">There are several different types of reports for a crashing process:<div><br></div><div>1) for gen* behaviours (gen_server, gen_event, gen_statem, ...), you get an error report issued by the crashing process just before it dies. For a gen_server, these messages start with " ** Generic server <...> terminating". These can be silenced with the process metadata + filter I suggested in my previous mail.</div><div><br></div><div>2) for gen* behaviours and other processes started with proc_lib, you get a crash report issued from the crashing process just before it dies. These reports (by default) have the heading == CRASH REPORT==, and the message starts with "crasher: ". These can be silenced with the process metadata + filter I suggested in my previous mail.</div><div><br></div><div>3) If the crashed process was part of a supervisor tree, a supervisor report is issued from the process' parent, that is, its supervisor. These reports (by default) have the heading == SUPERVISOR REPORT ==, and the message contains "errorContext: child_terminated". Since they are issued from a different process, these are not silenced by the suggested filter.</div><div><br></div><div>4) If the crashed process is not a gen* behaviour, and it is not started by proc_lib, then the emulator issues an error report which starts with "Error in process <...> with exit value:". These are not silenced by the suggested filter.</div><div><br></div><div>These are the ones I can think of right now - and I assume that what you see are the supervisor reports only. Is this correct?</div><div><br></div><div>How to silence the supervisor report depends on what you want to see from other processes. You can turn off supervisor reports with errorContext child_terminated completely for your system with this filter:<br></div><div><br></div><div>logger:add_primary_filter(stop_sup_reports,{fun(#{log:=#{label:={supervisor,child_terminated}}},_) -> stop; (_,_) -> ignore end, ok}).<br></div><div><br></div><div>or for one specific supervisor (fah_sup) with this one:</div><div><br></div><div><div>logger:add_primary_filter(stop_sup_reports,{fun(#{msg:={report,#{label:={supervisor,child_terminated},report:=R}}},_) -> case proplists:get_value(supervisor,R) of {local,fah_sup} -> stop; _ -> ignore end; (_,_) -> ignore end, ok}).</div></div><div><br></div><div>If the supervisor has other types of children, you might want to silence the reports related to one specific child id (fah) only. Then you can use this filter:</div><div><br></div><div><div><div>logger:add_primary_filter(stop_sup_reports,{fun(#{msg:={report,#{label:={supervisor,child_terminated},report:=R}}},_) -> Child = proplists:get_value(offender,R), case proplists:get_value(id,Child) of fah -> stop; _ -> ignore end; (_,_) -> ignore end, ok}).</div></div><br class="gmail-Apple-interchange-newline"></div><div>Since I don't know much about what your system does and needs, these are only a few ideas. Another possibility can be to turn off all so called "SASL reports" completely - this would silence reports 2) and 3) for all of your system - if that is acceptable.</div><div><br></div><div><div>The pid-idea from my first mail would only be needed for the emulator logs, 4) in my listing above, which I don't believe you see?</div><div><br></div></div><div><br></div></div></div></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><br></div><div>Maybe this:</div><div><br></div><div>logger:add_primary_filter(my_filter_id,{fun(#{meta:=#{label:={proc_lib,crash}}}) -> stop; (_,_) -> ignore end,ok}).</div><div><br></div><div>?</div><div><br></div></div></div></div></blockquote></div></div></blockquote><div><br></div><div>I assume Len meant to put 'msg' instead of 'meta' here. That would work, but it would silence the crash reports, 2) in my listing above, from all processes, not only the specific ones.</div><div><br></div><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>I hope this is of some help!</div><div>Kind Regards</div><div>/siri</div><div><br></div></div></div></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><br class="gmail-Apple-interchange-newline"></div></div></div></blockquote></div></div></blockquote></div></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div></div><div>---</div><div>Led<br></div></div></div></div>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div></div>
</blockquote></div></div></div></div>