logging - 较大的日志行被截断

标签 logging erlang lager

我正在修改一些 ejabberd 代码,但遇到了通过 lager 打印的错误:
2014-04-25 18:29:39.380 [error] emulator Error in process <0.652.0> on node 'ejabberd@localhost' with exit value: {function_clause,[{lists,zip,[[transport,connection,pid,method,version,peer,host,host_info,port,path,path_info,qs,qs_vals,bindings,headers,p_headers,cookies,meta,body_state,multipart,buffer,resp_compress...
不幸的是,该行被截断了,我看不到堆栈跟踪的其余部分。如何查看整个错误信息?

最佳答案

我认为啤酒的 trunc 大小可以调整如下:
lager.erl源文件

%% @doc Manually log a message into lager without using the parse transform.
-spec log(log_level(), pid() | atom() | [tuple(),...], list()) -> ok | {error, lager_not_running}.
log(Level, Pid, Message) when is_pid(Pid); is_atom(Pid) ->
    dispatch_log(Level, [{pid,Pid}], Message, [], ?DEFAULT_TRUNCATION);
log(Level, Metadata, Message) when is_list(Metadata) ->
    dispatch_log(Level, Metadata, Message, [], ?DEFAULT_TRUNCATION).

%% @doc Manually log a message into lager without using the parse transform.
-spec log(log_level(), pid() | atom() | [tuple(),...], string(), list()) -> ok | {error, lager_not_running}.
log(Level, Pid, Format, Args) when is_pid(Pid); is_atom(Pid) ->
    dispatch_log(Level, [{pid,Pid}], Format, Args, ?DEFAULT_TRUNCATION);
log(Level, Metadata, Format, Args) when is_list(Metadata) ->
    dispatch_log(Level, Metadata, Format, Args, ?DEFAULT_TRUNCATION).
?DEFAULT_TRUNCATION在lager.hrl 文件中定义。
-define(DEFAULT_TRUNCATION, 4096).
-define(DEFAULT_TRACER, lager_default_tracer).

我认为您可以增加上述默认值,然后再次编译啤酒以供使用。

但是你的日志没有4096那么长,而且日志不是来自lager,而是来自lager的重定向(error_logger)。以下问题可能与您的问题有关:
Truncated error report in erlang

关于logging - 较大的日志行被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23305603/

相关文章:

erlang - 每个应用程序的日志级别更大

java - Tomcat7忽略logging.properties中的java.util.logging

ios - NSLog数组描述,不是内存地址

java - 如何使用 System.out.println 查找 Java 类?

erlang - erlang如何:now() work?

erlang - 如何在没有崩溃报告的情况下优雅地终止 gen_server

java - 记录 jax-ws http 请求和响应

Erlang 元组匹配元素类型

erlang - erlang中的-pa和-pz是什么?

logging - 如何解决Erlang中Lager和OTP的Logger之间的冲突?