2012-02-02 49 views
1

我目前正在尝试设置otp日志记录功能,因为文档建议使用它。Erlang使用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("!!!!")说,再没有什么是印在日志文件中,我在做什么错?

回答

3

问题很简单。 SASL只记录PROGRESS,CRASH和SUPERVISOR报告(或者文件说明)。你正在发送一些它不记录的错误报告。如果在启用SASL的进程中创建某个崩溃,请说

proc_lib:spawn(fun() -> exit(argh) end). 

然后,该报告应该出现在您的日志中。我认为mf记录器采取一切,但我可​​能是错的。它还需要rb工具来读取有问题的日志文件。一个真正的应用程序的另一个好的选择是使用由Basho技术的好人编写的lager应用程序。它提供了更多类似syslog的接口,它也处理SASL错误日志类型。另外,如果你尝试记录一个非常大的进程状态 - 默认的SASL记录器会使用它,它不会破坏你的服务器。