diff options
author | Russell Branca <chewbranca@apache.org> | 2023-03-27 16:36:31 -0700 |
---|---|---|
committer | Russell Branca <chewbranca@apache.org> | 2023-05-04 13:00:34 -0700 |
commit | 91e04268cee3c22a786de76abadef20d13a97963 (patch) | |
tree | 0bc5c6aedc3732b2de47ded6dd9208d97d68bc34 | |
parent | cc241402c8fcc6ec8d0f0fddb6acf7c5c1026f29 (diff) | |
download | couchdb-91e04268cee3c22a786de76abadef20d13a97963.tar.gz |
Switch couch_log:report to only be metadata reporting
-rw-r--r-- | src/couch_log/priv/stats_descriptions.cfg | 4 | ||||
-rw-r--r-- | src/couch_log/src/couch_log.erl | 24 | ||||
-rw-r--r-- | src/couch_log/src/couch_log_formatter.erl | 68 |
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), |