summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Branca <chewbranca@apache.org>2023-03-27 16:36:31 -0700
committerRussell Branca <chewbranca@apache.org>2023-05-04 13:00:34 -0700
commit91e04268cee3c22a786de76abadef20d13a97963 (patch)
tree0bc5c6aedc3732b2de47ded6dd9208d97d68bc34
parentcc241402c8fcc6ec8d0f0fddb6acf7c5c1026f29 (diff)
downloadcouchdb-91e04268cee3c22a786de76abadef20d13a97963.tar.gz
Switch couch_log:report to only be metadata reporting
-rw-r--r--src/couch_log/priv/stats_descriptions.cfg4
-rw-r--r--src/couch_log/src/couch_log.erl24
-rw-r--r--src/couch_log/src/couch_log_formatter.erl68
3 files changed, 45 insertions, 51 deletions
diff --git a/src/couch_log/priv/stats_descriptions.cfg b/src/couch_log/priv/stats_descriptions.cfg
index febb5e057..c1cea1628 100644
--- a/src/couch_log/priv/stats_descriptions.cfg
+++ b/src/couch_log/priv/stats_descriptions.cfg
@@ -50,3 +50,7 @@
{type, counter},
{desc, <<"number of logged report messages">>}
]}.
+{[couch_log, level, report_error], [
+ {type, counter},
+ {desc, <<"number of failed report messages">>}
+]}.
diff --git a/src/couch_log/src/couch_log.erl b/src/couch_log/src/couch_log.erl
index 379326b52..961569d9d 100644
--- a/src/couch_log/src/couch_log.erl
+++ b/src/couch_log/src/couch_log.erl
@@ -22,7 +22,6 @@
alert/2,
emergency/2,
report/2,
- report/4,
set_level/1
]).
@@ -50,12 +49,8 @@ alert(Fmt, Args) -> log(alert, Fmt, Args).
-spec emergency(string(), list()) -> ok.
emergency(Fmt, Args) -> log(emergency, Fmt, Args).
--spec report(string(), map()) -> ok.
-report(ReportId, Meta) when is_map(Meta) ->
- report(ReportId, "", [], Meta).
-
--spec report(string(), string(), list(), map()) -> ok.
-report(ReportId, Fmt, Args, Meta0) when is_map(Meta0) ->
+-spec report(string(), map()) -> true | false.
+report(ReportId, Meta0) when is_map(Meta0) ->
Meta = case maps:is_key(type, Meta0) of
true ->
Meta0;
@@ -63,8 +58,14 @@ report(ReportId, Fmt, Args, Meta0) when is_map(Meta0) ->
Meta0#{type => ReportId}
end,
couch_stats:increment_counter([couch_log, level, report]),
- Entry = couch_log_formatter:format(report, self(), ReportId, Fmt, Args, Meta),
- ok = couch_log_server:log(Entry).
+ case couch_log_formatter:format_report(self(), ReportId, Meta) of
+ {error, emsgtoolong} ->
+ couch_stats:increment_counter([couch_log, level, report_error]),
+ false;
+ {ok, Entry} ->
+ ok = couch_log_server:log(Entry),
+ true
+ end.
-spec set_level(atom() | string() | integer()) -> true.
set_level(Level) ->
@@ -72,13 +73,10 @@ set_level(Level) ->
-spec log(atom(), string(), list()) -> ok.
log(Level, Fmt, Args) ->
- log(Level, undefined, Fmt, Args, #{}).
-
-log(Level, Type, Fmt, Args, Meta) ->
case couch_log_util:should_log(Level) of
true ->
couch_stats:increment_counter([couch_log, level, Level]),
- Entry = couch_log_formatter:format(Level, self(), Type, Fmt, Args, Meta),
+ Entry = couch_log_formatter:format(Level, self(), Fmt, Args),
ok = couch_log_server:log(Entry);
false ->
ok
diff --git a/src/couch_log/src/couch_log_formatter.erl b/src/couch_log/src/couch_log_formatter.erl
index bf7571975..03c2a530e 100644
--- a/src/couch_log/src/couch_log_formatter.erl
+++ b/src/couch_log/src/couch_log_formatter.erl
@@ -17,11 +17,12 @@
-module(couch_log_formatter).
-export([
- format/6,
format/4,
format/3,
format/1,
+ format_report/3,
+
format_reason/1,
format_mfa/1,
format_trace/1,
@@ -32,27 +33,38 @@
-define(DEFAULT_TRUNCATION, 1024).
-format(Level, Pid, Fmt, Args) ->
- format(Level, Pid, undefined, Fmt, Args, #{}).
+-define(REPORT_LEVEL, report).
-format(report = Level, Pid, Type, Fmt, Args, Meta) ->
- #log_entry{
- level = couch_log_util:level_to_atom(Level),
- pid = Pid,
- msg = maybe_truncate(Fmt, Args, Meta, false),
- msg_id = couch_log_util:get_msg_id(),
- time_stamp = couch_log_util:iso8601_timestamp(),
- type = Type
- };
+format_report(Pid, Type, Meta) ->
+ MaxMsgSize = couch_log_config:get(max_message_size),
+ Msg = case format_meta(Meta) of
+ "" ->
+ "";
+ MetaStr ->
+ ["[", MetaStr, "]"]
+ end,
+ case length(Msg) > MaxMsgSize of
+ true ->
+ {error, emsgtoolong};
+ false ->
+ Entry = #log_entry{
+ level = couch_log_util:level_to_atom(?REPORT_LEVEL),
+ pid = Pid,
+ msg = Msg,
+ msg_id = couch_log_util:get_msg_id(),
+ time_stamp = couch_log_util:iso8601_timestamp(),
+ type = Type
+ },
+ {ok, Entry}
+ end.
-format(Level, Pid, Type, Fmt, Args, Meta) ->
+format(Level, Pid, Fmt, Args) ->
#log_entry{
level = couch_log_util:level_to_atom(Level),
pid = Pid,
- msg = maybe_truncate(Fmt, Args, Meta, true),
+ msg = maybe_truncate(Fmt, Args),
msg_id = couch_log_util:get_msg_id(),
- time_stamp = couch_log_util:iso8601_timestamp(),
- type = Type
+ time_stamp = couch_log_util:iso8601_timestamp()
}.
format(Level, Pid, Msg) ->
@@ -380,29 +392,9 @@ format_args([H | T], FmtAcc, ArgsAcc) ->
{Str, _} = couch_log_trunc_io:print(H, 100),
format_args(T, ["~s" | FmtAcc], [Str | ArgsAcc]).
-maybe_truncate("", [], Meta, TruncateMeta) ->
- MaxMsgSize = couch_log_config:get(max_message_size),
- case format_meta(Meta) of
- "" ->
- "";
- MetaStr when TruncateMeta and length(MetaStr) > MaxMsgSize ->
- %% TODO: what to do when meta formatted data is too large?
- error(what_to_do_here);
- MetaStr ->
- ["[", MetaStr, "]"]
- end;
-maybe_truncate(Fmt, Args, Meta, TruncateMeta) ->
+maybe_truncate(Fmt, Args) ->
MaxMsgSize = couch_log_config:get(max_message_size),
- case format_meta(Meta) of
- "" ->
- couch_log_trunc_io:format(Fmt, Args, MaxMsgSize);
- MetaStr when TruncateMeta ->
- couch_log_trunc_io:format(["[", MetaStr, "] " | Fmt], Args, MaxMsgSize);
- MetaStr ->
- %% Subtract 3 for open/close bracket and space added below
- MsgLength = length(MetaStr) + 3,
- ["[", MetaStr, "] " | couch_log_trunc_io:format(Fmt, Args, MaxMsgSize - MsgLength)]
- end.
+ couch_log_trunc_io:format(Fmt, Args, MaxMsgSize).
maybe_truncate(Msg) ->
MaxMsgSize = couch_log_config:get(max_message_size),