在erlang中截断错误报告

Mat*_*att 4 erlang

警告:erlang n00b领先.

我正在努力掌握erlang,并试着用牛仔尝试一个基本的hello world应用程序.我正在模拟一个错误,基本上在我的代码中的某处返回一个无效值,并尝试解释错误,即:

=ERROR REPORT==== 11-Jul-2013::15:45:00 ===
Error in process <0.167.0> with exit value: {{try_clause,{ok,  {http_req,#Port<0.3619>,ranch_tcp,keepalive,<0.167.0>,<<3 bytes>>,'HTTP/1.1',  {{127,0,0,1},60312},<<9 bytes>>,undefined,8081,<<1 byte>>,undefined,<<0 bytes>>,undefined,[],[{<<10 bytes>>,<<11 bytes>>},{<<4 bytes>>,<<14 bytes>>},{<<6 bytes>>,<<3 bytes>>}],[],undefined,[],waiting,undefined,<<0 bytes>>,false,waiting,[],<<0 bytes>>,undefined}}},  [{cowboy_handler,handler_init,4,[...
Run Code Online (Sandbox Code Playgroud)

我用rebar设置我的应用程序,我正在运行它:

erl -pa ebin deps/*/ebin -s myapp
Run Code Online (Sandbox Code Playgroud)

如您所见,错误以"..."结尾,这让我觉得它被截断了.有没有办法打印完整的报告?

并且,有没有什么方法可以让它打印漂亮?

谢谢!

dan*_*kin 5

你看到的是sasl的tty处理程序.它将报告格式化并写入控制台.在格式化过程中它可以删除一些有用的数 要避免它,请使用这样的error_logger_mf_h处理程序:

创建app.config文件以将一些变量传递给sasl:

[

{sasl, [
    {sasl_error_logger, {file, "sasl.log"}},
    {errlog_type, all},
    {error_logger_mf_dir, "."}, % Log directory
    {error_logger_mf_maxbytes, 10485760}, % 10 MB max file size
    {error_logger_mf_maxfiles, 5} % 5 files max
]}

].
Run Code Online (Sandbox Code Playgroud)

然后带启动sasl的erl节点.日志将打印到sasl.log

erl -boot start_sasl -config app.config
Run Code Online (Sandbox Code Playgroud)