如何从 Erlang shell 记录到一个文件?

How to log to a file from the Erlang shell?

一直忘记 Logging chapter of the the Kernel User's Guide 已经有了答案。

释义内核用户指南日志记录章节中的 2.9 Example: Add a handler to log info events to file 部分:

1。设置日志级别(默认:notice

已接受 log levels(从最不严重到最严重):
debuginfonoticewarningerrorcriticalalertemergency

:
Erlang shell 中的默认日志级别是 notice,因此如果您保持原样,但在添加时设置较低的级别(例如 debuginfo)下一步的log handler,那几层log永远打不通。

例子:

logger:set_primary_config(level, debug).

2。配置和添加日志处理程序

指定handler configuration map,例如:

Config = #{config => #{file => "./sample.log"}, level => debug}.

add the handler

logger:add_handler(to_file_handler, logger_std_h, Config).

logger_std_h is the standard handler for Logger.

3。过滤掉 Erlang 上特定级别以下的日志 shell

按照上面的例子,打印各级日志。要恢复 notice 默认值,但仍将每个级别的日志保存在文件中),请使用 logger:set_handler_config/3.

logger:set_handler_config(default, level, notice).

正在进行的工作:将每个进程的事件记录到它们自己的日志文件中

This module 记录我的(部分成功的)尝试;将在时间允许的情况下重新访问并扩展此部分。我的用例是 FreeSWITCH phone 服务器会生成一个 Erlang 进程来处理调用,因此将它们中的每一个记录到它们自己的文件中在当时是有意义的。