有一些进程从<link rel="stylesheet" href=".{{ elixir("css/app.css") }}">
<script src=".{{ elixir("js/app.js") }}"></script>
开始,如果出现问题,Elixir(Erlang)会打印出如下错误信息:
Task.Supervisor.start_child
很难理解什么过程崩溃了。我想知道是否有办法为流程提供有意义的自动生成的名称?因此错误将更具描述性,例如:
23:56:06.257 [error] Task #PID<0.216.0> started from #PID<0.137.0> terminating
答案 0 :(得分:1)
您可以使用register/2
函数命名每个所需的流程:
二郎:
register(RegName, PidOrPort) -> true
药剂:
register(pid | port, atom) :: true
然后您需要实现您的记录器以使用process_info(PID, registered_name)
函数通过其PID获取所需进程的注册名称并使用该名称格式化日志文本。
更新:最好知道error_logger
是一个事件管理员(gen_event)。错误,警告,崩溃,进度和信息事件从Erlang运行时系统和不同的Erlang / OTP应用程序发送到错误记录器。它有一些默认的事件处理程序,以及sasl
这是一个OTP应用程序,它为您的应用程序添加了更多的日志记录功能。您还可以编写自己的事件处理程序并将其添加到error_logger
事件管理器。