From 3cef0524e4332ebf547180ec0d0feafe0a559b5c Mon Sep 17 00:00:00 2001 From: Siri Hansen Date: Wed, 2 May 2018 19:20:27 +0200 Subject: Add logger:update_process_metadata/1 --- lib/kernel/doc/src/logger.xml | 22 ++++++++++++++++++---- lib/kernel/src/logger.erl | 17 +++++++++++++++-- lib/kernel/test/logger_SUITE.erl | 3 +++ 3 files changed, 36 insertions(+), 6 deletions(-) (limited to 'lib/kernel') diff --git a/lib/kernel/doc/src/logger.xml b/lib/kernel/doc/src/logger.xml index 2beefd1240..2f7feb5eef 100644 --- a/lib/kernel/doc/src/logger.xml +++ b/lib/kernel/doc/src/logger.xml @@ -471,10 +471,9 @@ Current logger configuration: Set metadata to use when logging from current process. -

Set metadata which logger automatically inserts it - in all log events produced on the current - process. Subsequent calls will overwrite previous data set - by this function.

+

Set metadata which logger automatically inserts in + all log events produced on the current process. Subsequent + calls will overwrite previous data set by this function.

When logging, location data produced by the log macros, and/or metadata given as argument to the log call (API function or macro), will be merged with the process @@ -485,6 +484,21 @@ Current logger configuration: + + + Update metadata to use when logging from current process. + +

Update metadata to use when logging from current process

+

This function behaves as if it was implemented as follows:

+ +logger:set_process_metadata(maps:merge(logger:get_process_metadata(),Meta)) + +

If no process metadata exists, the function behaves as + set_process_metadata/1 + .

+
+ + Retrieve data set with set_process_metadata/1. diff --git a/lib/kernel/src/logger.erl b/lib/kernel/src/logger.erl index 943ef8c2d1..5562764204 100644 --- a/lib/kernel/src/logger.erl +++ b/lib/kernel/src/logger.erl @@ -44,8 +44,8 @@ %% Misc -export([compare_levels/2]). --export([set_process_metadata/1, unset_process_metadata/0, - get_process_metadata/0]). +-export([set_process_metadata/1, update_process_metadata/1, + unset_process_metadata/0, get_process_metadata/0]). -export([i/0, i/1]). -export([setup_standard_handler/0, replace_simple_handler/3]). -export([limit_term/1, get_format_depth/0, get_max_size/0, get_utc_config/0]). @@ -390,6 +390,19 @@ set_process_metadata(Meta) when is_map(Meta) -> set_process_metadata(Meta) -> erlang:error(badarg,[Meta]). +-spec update_process_metadata(Meta) -> ok when + Meta :: metadata(). +update_process_metadata(Meta) when is_map(Meta) -> + case get_process_metadata() of + undefined -> + set_process_metadata(Meta); + Meta0 when is_map(Meta0) -> + set_process_metadata(maps:merge(Meta0,Meta)), + ok + end; +update_process_metadata(Meta) -> + erlang:error(badarg,[Meta]). + -spec get_process_metadata() -> Meta | undefined when Meta :: metadata(). get_process_metadata() -> diff --git a/lib/kernel/test/logger_SUITE.erl b/lib/kernel/test/logger_SUITE.erl index 0edce3e34c..94fd87bdb0 100644 --- a/lib/kernel/test/logger_SUITE.erl +++ b/lib/kernel/test/logger_SUITE.erl @@ -666,6 +666,9 @@ process_metadata(_Config) -> check_logged(info,S3,#{time=>Time,line=>0,custom=>func}), ProcMeta = logger:get_process_metadata(), + ok = logger:update_process_metadata(#{custom=>changed,custom2=>added}), + Expected = ProcMeta#{custom:=changed,custom2=>added}, + Expected = logger:get_process_metadata(), ok = logger:unset_process_metadata(), undefined = logger:get_process_metadata(), -- cgit v1.2.3