我目前正尝试在我的应用中设置otp日志,因为文档建议使用它。
我有以下启动线:
erl -pa ebin edit deps/*/ebin -boot start_sasl \
-detached \
-sasl sasl_error_logger "{file, \"priv/log/app.log\"}" \
-sasl errlog_type all \
-sname $APP_NAME \
-s $APP_NAME
但是当我在我的应用程序中说error_logger:error_report("!!!!")
或error_logger:error_msg("!!!!")
之类的内容时,日志文件中没有打印任何内容,我做错了什么?
答案 0 :(得分:3)
问题很简单。 SASL仅记录PROGRESS,CRASH和SUPERVISOR报告(文档说明)。您正在发送一些不记录的错误报告。如果您在启用了SASL的进程中创建了一些崩溃,请说
proc_lib:spawn(fun() -> exit(argh) end).
然后该报告应出现在您的日志中。我认为mf
记录器可以解决所有问题,但我可能错了。它还需要rb
工具来读取有问题的日志文件。实际应用程序的一个很好的替代方案是使用Basho技术的优秀人员编写的lager
应用程序。它提供了一个更像syslog的界面,它也处理SASL错误日志类型。此外,如果您尝试记录一个非常大的进程状态(默认SASL记录器将会这样做),它不会破坏您的服务器。