From a006915a4f3ebbff84ccc83fb87f0283ebe49e8e Mon Sep 17 00:00:00 2001
From: Siri Hansen
Date: Wed, 3 Oct 2018 12:41:28 +0200
Subject: [logger] Add update_handler_config/3
This function is similar to set_handler_config/3, but calls the handler
callback changing_config/3 with the first parameter SetOrUpdate=update.
---
lib/kernel/doc/src/logger.xml | 48 +++++++++++++++++++++++++++++++++--
lib/kernel/doc/src/logger_chapter.xml | 14 ++++++----
lib/kernel/src/logger.erl | 26 ++++++++++++++++++-
lib/kernel/src/logger_server.erl | 11 +++++++-
4 files changed, 90 insertions(+), 9 deletions(-)
(limited to 'lib')
diff --git a/lib/kernel/doc/src/logger.xml b/lib/kernel/doc/src/logger.xml
index 8f54d0e54f..aa6e17f27b 100644
--- a/lib/kernel/doc/src/logger.xml
+++ b/lib/kernel/doc/src/logger.xml
@@ -748,6 +748,14 @@ start(_, []) ->
exists, its associated value will be changed
to the given value. If it does not exist, it will
be added.
+ If the value is incomplete, which for example can be the
+ case for the config key, it is up to the handler
+ implementation how the unspecified parts are set. For all
+ handlers in the Kernel application, unspecified data for
+ the config key is set to default values. To update
+ only specified data, and keep the existing configuration for
+ the rest, use
+ update_handler_config/3.
See the definition of
the
handler_config() type for more
@@ -932,6 +940,42 @@ logger:set_handler_config(HandlerId, maps:merge(Old, Config)).
+
+
+
+
+
+
+ Add or update configuration data for the specified
+ handler.
+
+
+
+
+
+
+
+
+ Add or update configuration data for the specified
+ handler. If the given Key already
+ exists, its associated value will be changed
+ to the given value. If it does not exist, it will
+ be added.
+ If the value is incomplete, which for example can be the
+ case for the config key, it is up to the handler
+ implementation how the unspecified parts are set. For all
+ handlers in the Kernel application, unspecified data for
+ the config key is not changed. To reset unspecified
+ data to default values,
+ use
+ set_handler_config/3.
+ See the definition of
+ the
+ handler_config() type for more
+ information about the different parameters.
+
+
+
Update primary configuration data for Logger.
@@ -1063,7 +1107,7 @@ logger:set_process_metadata(maps:merge(logger:get_process_metadata(), Meta)).
set_handler_config/2,3, and update
if it originates from
- update_handler_config/2. The handler can
+ update_handler_config/2,3. The handler can
use this parameteter to decide how to update the value of
the config field, that is, the handler specific
configuration data. Typically, if SetOrUpdate
@@ -1150,7 +1194,7 @@ logger:set_process_metadata(maps:merge(logger:get_process_metadata(), Meta)).
-
logger:set_handler_config/2,3
-
- logger:updata_handler_config/2
+ logger:updata_handler_config/2,3
-
logger:update_formatter_config/2
diff --git a/lib/kernel/doc/src/logger_chapter.xml b/lib/kernel/doc/src/logger_chapter.xml
index 7e88f82dad..777c37058e 100644
--- a/lib/kernel/doc/src/logger_chapter.xml
+++ b/lib/kernel/doc/src/logger_chapter.xml
@@ -555,7 +555,7 @@ logger:debug(#{got => connection_request, id => Id, state => State},
-
set_handler_config/2,3
-
- update_handler_config/2
+ update_handler_config/2,3
-
add_handler_filter/3
-
@@ -704,9 +704,13 @@ logger:debug(#{got => connection_request, id => Id, state => State},
-
If HandlerId is default, then this entry
modifies the default handler, equivalent to calling
-
- logger:set_handler_config(default, Module, HandlerConfig)
-
+
+ logger:remove_handler(default)
+
+ followed by
+
+ logger:add_handler(default, Module, HandlerConfig)
+
For all other values of HandlerId, this entry
adds a new handler, equivalent to calling
@@ -1043,7 +1047,7 @@ ok
When
logger:set_handler_config/2,3
or
- logger:update_handler_config/2 is called,
+ logger:update_handler_config/2,3
is called,
Logger
calls HModule:changing_config(SetOrUpdate, OldConfig, NewConfig). If
this function returns {ok,NewConfig1}, Logger
diff --git a/lib/kernel/src/logger.erl b/lib/kernel/src/logger.erl
index 752dd8d493..3ffa8a0c4e 100644
--- a/lib/kernel/src/logger.erl
+++ b/lib/kernel/src/logger.erl
@@ -43,7 +43,8 @@
get_module_level/0, get_module_level/1,
set_primary_config/1, set_primary_config/2,
set_handler_config/2, set_handler_config/3,
- update_primary_config/1, update_handler_config/2,
+ update_primary_config/1,
+ update_handler_config/2, update_handler_config/3,
update_formatter_config/2, update_formatter_config/3,
get_primary_config/0, get_handler_config/1,
get_handler_config/0, get_handler_ids/0, get_config/0,
@@ -423,6 +424,29 @@ set_handler_config(HandlerId,Config) ->
update_primary_config(Config) ->
logger_server:update_config(primary,Config).
+-spec update_handler_config(HandlerId,level,Level) -> Return when
+ HandlerId :: handler_id(),
+ Level :: level() | all | none,
+ Return :: ok | {error,term()};
+ (HandlerId,filter_default,FilterDefault) -> Return when
+ HandlerId :: handler_id(),
+ FilterDefault :: log | stop,
+ Return :: ok | {error,term()};
+ (HandlerId,filters,Filters) -> Return when
+ HandlerId :: handler_id(),
+ Filters :: [{filter_id(),filter()}],
+ Return :: ok | {error,term()};
+ (HandlerId,formatter,Formatter) -> Return when
+ HandlerId :: handler_id(),
+ Formatter :: {module(), formatter_config()},
+ Return :: ok | {error,term()};
+ (HandlerId,config,Config) -> Return when
+ HandlerId :: handler_id(),
+ Config :: term(),
+ Return :: ok | {error,term()}.
+update_handler_config(HandlerId,Key,Value) ->
+ logger_server:update_config(HandlerId,Key,Value).
+
-spec update_handler_config(HandlerId,Config) -> ok | {error,term()} when
HandlerId :: handler_id(),
Config :: handler_config().
diff --git a/lib/kernel/src/logger_server.erl b/lib/kernel/src/logger_server.erl
index a14de2664e..9e043f9362 100644
--- a/lib/kernel/src/logger_server.erl
+++ b/lib/kernel/src/logger_server.erl
@@ -27,7 +27,8 @@
add_filter/2, remove_filter/2,
set_module_level/2, unset_module_level/0,
unset_module_level/1, cache_module_level/1,
- set_config/2, set_config/3, update_config/2,
+ set_config/2, set_config/3,
+ update_config/2, update_config/3,
update_formatter_config/2]).
%% gen_server callbacks
@@ -120,6 +121,14 @@ set_config(Owner,Config) ->
Error
end.
+update_config(Owner,Key,Value) ->
+ case sanity_check(Owner,Key,Value) of
+ ok ->
+ call({change_config,update,Owner,Key,Value});
+ Error ->
+ Error
+ end.
+
update_config(Owner, Config) ->
case sanity_check(Owner,Config) of
ok ->
--
cgit v1.2.3