2014-04-26 8 views
5

kesildi ve ben lager yoluyla basılan bir hata karşısında geliyorum:Lager günlüğü hat Bazı ejabberd kodunu değiştirmeye çalışıyorum

2014-04-25 18:29:39.380 [error] emulator Error in process <0.652.0> on node '[email protected]' 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...

Maalesef hat kesildi ve ben göremiyorum yığın izinin geri kalanı. Tüm hata iletisini nasıl görüntüleyebilirim? lager.erl kaynak dosyadan

%% @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 yılında lager.hrl dosyasında tanımlanır:

cevap

4

ben şöyle Lager en trunc boyutu ayarlanabilir düşünüyorum.

-define(DEFAULT_TRUNCATION, 4096). 
-define(DEFAULT_TRACER, lager_default_tracer). 

Yukarıdaki varsayılan değeri artırabilir ve daha sonra tekrar kullanmak için tekrar biraraya getirebilirsiniz.

Ancak günlüğünüz 4096 kadar uzun değil ve günlüğün lager değil, lager'ın yönlendirmesinden (error_logger). Aşağıdaki soru, sorununuza bağlı olabilir: Truncated error report in erlang

+0

Teşekkürler, Pazartesi günlüğüne hata kaydedici bilgilerini deneyeceğim. – kjw0188

+0

Yardım etmek için görünmüyordu. Orijinal sorunu çözdüm, ancak günlük satırı hala kesiliyordu. Kovboy'da buna benzer bir şey gibi görünüyor. – kjw0188

2

İki olasılık vardır. İlk inşaat demiri/erlang.mk içinde erlc seçeneklerine aşağıdaki derleme seçeneği eklemektir:

+'{lager_truncation_size, 20480}' 

Bu muhtemelen, erlc tarafından derlenen tüm modülleri için 20 kb'nin toplam günlük izin verilen maksimum boyutu ayarlamak Bir make dosyası hazırlamıyorsanız, projede hepsi. Kesik sınırın, lager süreçlerine aşırı yüklenmemesinin bir sebebi olduğundan, tüm proje boyunca bunu yapmak tehlikeli olabilir. -compile özelliğini kullanarak bir modül bazında bu ekleme çalışmıyor

Not this issue bakın.

başka yolu lager:dispatch_log kendinizi aramaya ve bypass dönüşümü:

lager:dispatch_log(info, [{pid, self()}], "hello ~s|", [lists:duplicate(1000, "hello")], 20480). 

Her iki yöntem kodunda değişiklik yapmak veya süreci inşa gerektirir.

+0

Başvurulan sorun şimdi org değişikliği nedeniyle burada yaşıyor (https://github.com/erlang-lager/lager/issues/211#issuecomment-37545795). –

İlgili konular