summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2014-03-24 12:24:49 +0000
committerSimon MacMullen <simon@rabbitmq.com>2014-03-24 12:24:49 +0000
commit502d1c63340e01b5c74f99d0f9b76bacec8d5bf6 (patch)
tree5484f1aff560316abfb888f64bc2d9a0c9497a79
parentdaf0162802ce27959dbbc0554af34da34173de54 (diff)
downloadrabbitmq-server-502d1c63340e01b5c74f99d0f9b76bacec8d5bf6.tar.gz
Don't let the truncate module have any opinion on how much to truncate.
-rw-r--r--include/rabbit.hrl4
-rw-r--r--src/rabbit_error_logger.erl2
-rw-r--r--src/rabbit_error_logger_file_h.erl12
-rw-r--r--src/rabbit_sasl_report_file_h.erl4
-rw-r--r--src/truncate.erl18
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