You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by da...@apache.org on 2014/02/03 23:12:32 UTC
[18/29] twig commit: updated refs/heads/import to 2d56280
Truncate large messages
Behavior is controlled by two application environment settings:
max_term_size - raw data size below which we format normally (8192)
max_message_size - approx. max size of truncated string (16000)
Project: http://git-wip-us.apache.org/repos/asf/couchdb-twig/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-twig/commit/328e707d
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-twig/tree/328e707d
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-twig/diff/328e707d
Branch: refs/heads/import
Commit: 328e707da326b7e65afe4f4c38a3758c7c43b80d
Parents: eaa15f1
Author: Adam Kocoloski <ad...@cloudant.com>
Authored: Wed Mar 9 12:53:12 2011 -0500
Committer: Adam Kocoloski <ad...@cloudant.com>
Committed: Wed Mar 9 13:03:06 2011 -0500
----------------------------------------------------------------------
src/twig.erl | 2 +-
src/twig_event_handler.erl | 43 ++++++++++++++++-------------------------
src/twig_util.erl | 20 ++++++++++++++++++-
3 files changed, 37 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb-twig/blob/328e707d/src/twig.erl
----------------------------------------------------------------------
diff --git a/src/twig.erl b/src/twig.erl
index 191c25b..b97f51b 100644
--- a/src/twig.erl
+++ b/src/twig.erl
@@ -46,7 +46,7 @@ format(Level, Format, Data) ->
%% TODO truncate large messages
#twig{
level = Level,
- msg = iolist_to_binary(io_lib:format(Format, Data)),
+ msg = iolist_to_binary(twig_util:format(Format, Data)),
msgid = erlang:get(nonce),
pid = self()
}.
http://git-wip-us.apache.org/repos/asf/couchdb-twig/blob/328e707d/src/twig_event_handler.erl
----------------------------------------------------------------------
diff --git a/src/twig_event_handler.erl b/src/twig_event_handler.erl
index 2dbab71..b548339 100644
--- a/src/twig_event_handler.erl
+++ b/src/twig_event_handler.erl
@@ -17,6 +17,8 @@
-export([init/1, handle_event/2, handle_call/2, handle_info/2, terminate/2,
code_change/3]).
+-import(twig_util, [get_env/2]).
+
-record(state, {
socket,
host,
@@ -88,33 +90,15 @@ terminate(_Reason, State) ->
code_change(_OldVsn, State, _Extra) ->
{ok, State}.
-get_env(Key, Default) ->
- case application:get_env(twig, Key) of
- {ok, Value} ->
- Value;
- undefined ->
- Default
- end.
-
write(Level, undefined, Msg, Pid, State) ->
write(Level, "--------", Msg, Pid, State);
write(Level, MsgId, Msg, Pid, State) when is_list(Msg); is_binary(Msg) ->
#state{facility=Facil, appid=App, hostname=Hostname, host=Host, port=Port,
socket=Socket} = State,
- Pre = io_lib:format("<~B>~B ~s ~s ~s ~p ~s - ", [Facil bor Level,
+ Pre = io_lib:format("<~B>~B ~s ~s ~s ~p ~s - ", [Facil bor Level,
?SYSLOG_VERSION, twig_util:iso8601_timestamp(), Hostname, App, Pid,
MsgId]),
- %% TODO truncate large messages
- send(Socket, Host, Port, [Pre, Msg, $\n]);
-write(Level, MsgId, {Format0, Args0}, Pid, State) ->
- #state{facility=Facil, appid=App, hostname=Hostname, host=Host, port=Port,
- socket=Socket} = State,
- Format = "<~B>~B ~s ~s ~s ~p ~s - " ++ Format0 ++ "\n",
- Args = [Facil bor Level, ?SYSLOG_VERSION, twig_util:iso8601_timestamp(),
- Hostname, App, Pid, MsgId | Args0],
- %% TODO truncate large messages
- Packet = io_lib:format(Format, Args),
- send(Socket, Host, Port, Packet).
+ send(Socket, Host, Port, [Pre, Msg, $\n]).
send(_, undefined, _, Packet) ->
io:put_chars(Packet);
@@ -122,7 +106,14 @@ send(Socket, Host, Port, Packet) ->
gen_udp:send(Socket, Host, Port, Packet).
message(crash_report, Report) ->
- {crash_report, proc_lib:format(Report)};
+ Msg = case erts_debug:flat_size(Report) > get_env(max_term_size, 8192) of
+ true ->
+ MaxString = get_env(max_message_size, 16000),
+ ["*Truncated* - ", trunc_io:print(Report, MaxString)];
+ false ->
+ proc_lib:format(Report)
+ end,
+ {crash_report, Msg};
message(supervisor_report, Report) ->
Name = get_value(supervisor, Report),
Error = get_value(errorContext, Report),
@@ -136,18 +127,18 @@ message(supervisor_report, Report) ->
{M,F,_} ->
ok
end,
- {supervisor_report, {"~p ~p (~p) child: ~p [~p] ~p:~p",
- [Name, Error, Reason, ChildName, ChildPid, M, F]}};
+ {supervisor_report, twig_util:format("~p ~p (~p) child: ~p [~p] ~p:~p",
+ [Name, Error, Reason, ChildName, ChildPid, M, F])};
message(Type, Report) when Type == std_error;
Type == std_info;
Type == std_warning;
Type == progress_report;
Type == progress ->
- {Type, {"~2048.0p", [Report]}};
+ {Type, twig_util:format("~2048.0p", [Report])};
message(Format, Args) when is_list(Format) ->
- {msg, {Format, Args}};
+ {msg, twig_util:format(Format, Args)};
message(Format, Args) ->
- {unknown, {"~2048.0p ~2048.0p", [Format, Args]}}.
+ {unknown, twig_util:format("~2048.0p ~2048.0p", [Format, Args])}.
otp_event_level(error, _) -> ?LEVEL_ERR;
otp_event_level(warning_msg, _) -> ?LEVEL_WARN;
http://git-wip-us.apache.org/repos/asf/couchdb-twig/blob/328e707d/src/twig_util.erl
----------------------------------------------------------------------
diff --git a/src/twig_util.erl b/src/twig_util.erl
index 19ec802..943ef1a 100644
--- a/src/twig_util.erl
+++ b/src/twig_util.erl
@@ -12,7 +12,7 @@
-module(twig_util).
--export([level/1, facility/1, iso8601_timestamp/0]).
+-export([format/2, get_env/2, level/1, facility/1, iso8601_timestamp/0]).
level(debug) -> 7;
level(info) -> 6;
@@ -56,3 +56,21 @@ iso8601_timestamp() ->
{{Year,Month,Date},{Hour,Minute,Second}} = calendar:now_to_datetime(Now),
Format = "~4.10.0B-~2.10.0B-~2.10.0BT~2.10.0B:~2.10.0B:~2.10.0B.~6.10.0BZ",
io_lib:format(Format, [Year, Month, Date, Hour, Minute, Second, Micro]).
+
+format(Format, Data) ->
+ MaxTermSize = get_env(max_term_size, 8192),
+ case erts_debug:flat_size(Data) > MaxTermSize of
+ true ->
+ MaxString = get_env(max_message_size, 16000),
+ ["*Truncated* ", Format, " - ", trunc_io:print(Data, MaxString)];
+ false ->
+ io_lib:format(Format, Data)
+ end.
+
+get_env(Key, Default) ->
+ case application:get_env(twig, Key) of
+ {ok, Value} ->
+ Value;
+ undefined ->
+ Default
+ end.