erlang - 如何从 Erlang shell 登录到文件?
问题描述
一直忘记内核用户指南的日志记录章节已经有了答案。
解决方案
解释2.9 示例:在内核用户指南的日志记录章节中添加一个处理程序以将信息事件记录到文件部分:
1.设置日志级别(默认notice
:)
- 在全球范围内:
logger:set_primary_config/2
- 仅适用于某些模块:
logger:set_module_level/2
接受的日志级别(从最不严重到最严重):
debug
, info
, notice
, warning
, error
, critical
, alert
,emergency
注意:
Erlang shell 中默认的日志级别是notice
,所以如果您保持原样,但在下一步添加日志处理程序时设置较低的级别(例如debug
或),则该级别的日志将永远无法通过。info
示例:
logger:set_primary_config(level, debug).
2.配置和添加日志处理程序
指定处理程序配置映射,例如:
Config = #{config => #{file => "./sample.log"}, level => debug}.
并添加处理程序:
logger:add_handler(to_file_handler, logger_std_h, Config).
logger_std_h
是 Logger 的标准处理程序。
3. Erlang shell 过滤掉一定级别以下的日志
按照上面的示例,将打印所有级别的日志。要恢复notice
默认值,但仍将每个级别的日志保存在文件中),请使用logger:set_handler_config/3
.
logger:set_handler_config(default, level, notice).
正在进行的工作:将每个进程的事件记录到他们自己的日志文件中
这个模块记录了我的(部分成功的)尝试;将在时间允许时重新访问并扩展此部分。我的用例是 FreeSWITCH 电话服务器会产生一个 Erlang 进程来处理呼叫,因此当时将它们每个人记录到自己的文件中是有意义的。
推荐阅读
- scala - 使用 Akka.io 从 Azure SQL 数据库中提取数据
- jquery - 我在本地使用 AJAX 时收到 403(禁止)错误
- xbrl - 在 XBRL 中,同一个演示网络是否适用于单个 SEC 文件中的所有上下文?
- reactjs - 尝试在终端中运行 npm start 命令
- asp.net-core-3.1 - Microsoft.AspNetCore.Mvc.ViewFeatures.Infrastructure.DefaultTempDataSerializer' 无法序列化类型的对象
- django - Django-React/Redux-Apache 项目:无法解析 url
- mongoose-os - 如何通过 MQTT 进行 RPC 调用(Google IoT Core + Mongoose OS)
- inno-setup - 如何从 Inno Setup 的代码部分运行程序或批处理文件?
- html - CSS中如何计算vw和vh的比例
- python - 调试 selenium webdriver 并可以在调试器中按预期查看元素,但是在我的脚本中查询时它们显示为空