diff options
| -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 078f1c6e08..8d69b8b299 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 53c0e608d1..76d819e0ab 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 2f66f98f0d..4ef3aeb1d9 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 efdef3f6f5..3378053547 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 7828a9864d..5708e21fdc 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 |
