diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2014-03-24 12:24:49 +0000 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2014-03-24 12:24:49 +0000 |
commit | 502d1c63340e01b5c74f99d0f9b76bacec8d5bf6 (patch) | |
tree | 5484f1aff560316abfb888f64bc2d9a0c9497a79 | |
parent | daf0162802ce27959dbbc0554af34da34173de54 (diff) | |
download | rabbitmq-server-502d1c63340e01b5c74f99d0f9b76bacec8d5bf6.tar.gz |
Don't let the truncate module have any opinion on how much to truncate.
-rw-r--r-- | include/rabbit.hrl | 4 | ||||
-rw-r--r-- | src/rabbit_error_logger.erl | 2 | ||||
-rw-r--r-- | src/rabbit_error_logger_file_h.erl | 12 | ||||
-rw-r--r-- | src/rabbit_sasl_report_file_h.erl | 4 | ||||
-rw-r--r-- | src/truncate.erl | 18 |
5 files changed, 24 insertions, 16 deletions
diff --git a/include/rabbit.hrl b/include/rabbit.hrl index 078f1c6e..8d69b8b2 100644 --- a/include/rabbit.hrl +++ b/include/rabbit.hrl @@ -119,4 +119,8 @@ %% wrapping the message body). -define(MAX_MSG_SIZE, 2147383648). +%% Maximum size of any individual bit of a term to be logged. Feeds +%% into truncate:log_event/2. +-define(LOG_TRUNCATE_SIZE, 100). + -define(store_proc_name(N), rabbit_misc:store_proc_name(?MODULE, N)). diff --git a/src/rabbit_error_logger.erl b/src/rabbit_error_logger.erl index 53c0e608..76d819e0 100644 --- a/src/rabbit_error_logger.erl +++ b/src/rabbit_error_logger.erl @@ -89,7 +89,7 @@ publish1(RoutingKey, Format, Data, LogExch) -> Timestamp = rabbit_misc:now_ms() div 1000, %% TODO: is 'Data' ever in crash report format? I think not, but check... - Args = [truncate:log_event(A) || A <- Data], + Args = [truncate:log_event(A, ?LOG_TRUNCATE_SIZE) || A <- Data], {ok, _DeliveredQPids} = rabbit_basic:publish(LogExch, RoutingKey, #'P_basic'{content_type = <<"text/plain">>, diff --git a/src/rabbit_error_logger_file_h.erl b/src/rabbit_error_logger_file_h.erl index 2f66f98f..4ef3aeb1 100644 --- a/src/rabbit_error_logger_file_h.erl +++ b/src/rabbit_error_logger_file_h.erl @@ -15,6 +15,7 @@ %% -module(rabbit_error_logger_file_h). +-include("rabbit.hrl"). -behaviour(gen_event). @@ -92,15 +93,14 @@ handle_event(Event = {error, _, {emulator, _, ["Discarding message" ++ _]}}, case get(discarding_message_seen) of true -> {ok, State}; undefined -> put(discarding_message_seen, true), - error_logger_file_h:handle_event( - truncate:log_event(Event), State) + error_logger_file_h:handle_event(t(Event), State) end; %% Clear this state if we log anything else (but not a progress report). handle_event(Event = {info_msg, _, _}, State) -> erase(discarding_message_seen), - error_logger_file_h:handle_event(truncate:log_event(Event), State); + error_logger_file_h:handle_event(t(Event), State); handle_event(Event, State) -> - error_logger_file_h:handle_event(truncate:log_event(Event), State). + error_logger_file_h:handle_event(t(Event), State). handle_info(Info, State) -> error_logger_file_h:handle_info(Info, State). @@ -113,3 +113,7 @@ terminate(Reason, State) -> code_change(OldVsn, State, Extra) -> error_logger_file_h:code_change(OldVsn, State, Extra). + +%%---------------------------------------------------------------------- + +t(Term) -> truncate:log_event(Term, ?LOG_TRUNCATE_SIZE). diff --git a/src/rabbit_sasl_report_file_h.erl b/src/rabbit_sasl_report_file_h.erl index efdef3f6..33780535 100644 --- a/src/rabbit_sasl_report_file_h.erl +++ b/src/rabbit_sasl_report_file_h.erl @@ -15,6 +15,7 @@ %% -module(rabbit_sasl_report_file_h). +-include("rabbit.hrl"). -behaviour(gen_event). @@ -66,7 +67,8 @@ init_file({File, Type}) -> end. handle_event(Event, State) -> - sasl_report_file_h:handle_event(truncate:log_event(Event), State). + sasl_report_file_h:handle_event( + truncate:log_event(Event, ?LOG_TRUNCATE_SIZE), State). handle_info(Info, State) -> sasl_report_file_h:handle_info(Info, State). diff --git a/src/truncate.erl b/src/truncate.erl index 7828a986..5708e21f 100644 --- a/src/truncate.erl +++ b/src/truncate.erl @@ -16,30 +16,28 @@ -module(truncate). --export([log_event/1]). +-export([log_event/2]). %% exported for testing --export([term/1, term/2]). +-export([term/2]). -log_event({Type, GL, {Pid, Format, Args}}) +log_event({Type, GL, {Pid, Format, Args}}, Size) when Type =:= error orelse Type =:= info_msg orelse Type =:= warning_msg -> - {Type, GL, {Pid, Format, [term(T) || T <- Args]}}; -log_event({Type, GL, {Pid, ReportType, Report}}) + {Type, GL, {Pid, Format, [term(T, Size) || T <- Args]}}; +log_event({Type, GL, {Pid, ReportType, Report}}, Size) when Type =:= error_report orelse Type =:= info_report orelse Type =:= warning_report -> Report2 = case ReportType of - crash_report -> [[{K, term(V)} || {K, V} <- R] || + crash_report -> [[{K, term(V, Size)} || {K, V} <- R] || R <- Report]; - _ -> [{K, term(V)} || {K, V} <- Report] + _ -> [{K, term(V, Size)} || {K, V} <- Report] end, {Type, GL, {Pid, ReportType, Report2}}; -log_event(Event) -> +log_event(Event, _Size) -> Event. -term(T) -> term(T, 10). - %% TODO: avoid copying %% TODO: can we get away with using binary:part/3 (OTP vsn requirements)? %% TODO: reconsider depth limit handling |