PID的有意义的自动生成名称用于调试目的?

时间:2016-01-27 13:14:30

标签: erlang elixir

有一些进程从<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

1 个答案:

答案 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事件管理器。