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