aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/src
diff options
context:
space:
mode:
authorSiri Hansen <[email protected]>2018-12-14 13:05:32 +0100
committerSiri Hansen <[email protected]>2019-01-16 09:59:24 +0100
commit6211cead7be6f0871cfcccccdfc00dbeb466bcf2 (patch)
tree887402465f8a581a83006df906d44668a1baa7ab /lib/kernel/src
parent2c63eda781ccf12c2f35a94bc07b1b1013232483 (diff)
downloadotp-6211cead7be6f0871cfcccccdfc00dbeb466bcf2.tar.gz
otp-6211cead7be6f0871cfcccccdfc00dbeb466bcf2.tar.bz2
otp-6211cead7be6f0871cfcccccdfc00dbeb466bcf2.zip
[logger] Add API function for configuring logger proxy
Diffstat (limited to 'lib/kernel/src')
-rw-r--r--lib/kernel/src/logger.erl41
-rw-r--r--lib/kernel/src/logger_olp.erl11
-rw-r--r--lib/kernel/src/logger_proxy.erl15
3 files changed, 50 insertions, 17 deletions
diff --git a/lib/kernel/src/logger.erl b/lib/kernel/src/logger.erl
index 1611d489e6..0ab3addfef 100644
--- a/lib/kernel/src/logger.erl
+++ b/lib/kernel/src/logger.erl
@@ -43,11 +43,14 @@
get_module_level/0, get_module_level/1,
set_primary_config/1, set_primary_config/2,
set_handler_config/2, set_handler_config/3,
+ set_proxy_config/1,
update_primary_config/1,
update_handler_config/2, update_handler_config/3,
+ update_proxy_config/1,
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,
+ get_proxy_config/0,
add_handlers/1]).
%% Private configuration
@@ -122,6 +125,18 @@
{filters,log | stop,[{filter_id(),filter()}]} |
{module_level,level(),[module()]}].
+-type olp_config() :: #{sync_mode_qlen => non_neg_integer(),
+ drop_mode_qlen => pos_integer(),
+ flush_qlen => pos_integer(),
+ burst_limit_enable => boolean(),
+ burst_limit_max_count => pos_integer(),
+ burst_limit_window_time => pos_integer(),
+ overload_kill_enable => boolean(),
+ overload_kill_qlen => pos_integer(),
+ overload_kill_mem_size => pos_integer(),
+ overload_kill_restart_after =>
+ non_neg_integer() | infinity}.
+
-export_type([log_event/0,
level/0,
report/0,
@@ -137,7 +152,8 @@
filter_arg/0,
filter_return/0,
config_handler/0,
- formatter_config/0]).
+ formatter_config/0,
+ olp_config/0]).
%%%-----------------------------------------------------------------
%%% API
@@ -390,6 +406,7 @@ set_primary_config(Key,Value) ->
set_primary_config(Config) ->
logger_server:set_config(primary,Config).
+
-spec set_handler_config(HandlerId,level,Level) -> Return when
HandlerId :: handler_id(),
Level :: level() | all | none,
@@ -419,6 +436,14 @@ set_handler_config(HandlerId,Key,Value) ->
set_handler_config(HandlerId,Config) ->
logger_server:set_config(HandlerId,Config).
+-spec set_proxy_config(Config) -> ok | {error,term()} when
+ Config :: olp_config().
+set_proxy_config(Config) when is_map(Config) ->
+ Defaults = logger_proxy:get_default_config(),
+ logger_olp:set_opts(logger_proxy,maps:merge(Defaults,Config));
+set_proxy_config(Config) ->
+ {error,{invalid_config,Config}}.
+
-spec update_primary_config(Config) -> ok | {error,term()} when
Config :: primary_config().
update_primary_config(Config) ->
@@ -453,6 +478,13 @@ update_handler_config(HandlerId,Key,Value) ->
update_handler_config(HandlerId,Config) ->
logger_server:update_config(HandlerId,Config).
+-spec update_proxy_config(Config) -> ok | {error,term()} when
+ Config :: olp_config().
+update_proxy_config(Config) when is_map(Config) ->
+ logger_olp:set_opts(logger_proxy,Config);
+update_proxy_config(Config) ->
+ {error,{invalid_config,Config}}.
+
-spec get_primary_config() -> Config when
Config :: primary_config().
get_primary_config() ->
@@ -486,6 +518,11 @@ get_handler_ids() ->
{ok,#{handlers:=HandlerIds}} = logger_config:get(?LOGGER_TABLE,primary),
HandlerIds.
+-spec get_proxy_config() -> Config when
+ Config :: olp_config().
+get_proxy_config() ->
+ logger_olp:get_opts(logger_proxy).
+
-spec update_formatter_config(HandlerId,FormatterConfig) ->
ok | {error,term()} when
HandlerId :: handler_id(),
@@ -606,10 +643,12 @@ unset_process_metadata() ->
-spec get_config() -> #{primary=>primary_config(),
handlers=>[handler_config()],
+ proxy=>olp_config(),
module_levels=>[{module(),level() | all | none}]}.
get_config() ->
#{primary=>get_primary_config(),
handlers=>get_handler_config(),
+ proxy=>get_proxy_config(),
module_levels=>lists:keysort(1,get_module_level())}.
-spec internal_init_logger() -> ok | {error,term()}.
diff --git a/lib/kernel/src/logger_olp.erl b/lib/kernel/src/logger_olp.erl
index 013cc6ce37..fbc2e81882 100644
--- a/lib/kernel/src/logger_olp.erl
+++ b/lib/kernel/src/logger_olp.erl
@@ -47,16 +47,7 @@
-opaque olp_ref() :: {atom(),pid(),ets:tid()}.
--type options() :: #{sync_mode_qlen => integer(),
- drop_mode_qlen => integer(),
- flush_qlen => integer(),
- burst_limit_enable => boolean(),
- burst_limit_max_count => integer(),
- burst_limit_window_time => integer(),
- overload_kill_enable => boolean(),
- overload_kill_qlen => integer(),
- overload_kill_mem_size => integer(),
- overload_kill_restart_after => integer()}.
+-type options() :: logger:olp_config().
%%%-----------------------------------------------------------------
%%% API
diff --git a/lib/kernel/src/logger_proxy.erl b/lib/kernel/src/logger_proxy.erl
index f89891bff0..45a3011828 100644
--- a/lib/kernel/src/logger_proxy.erl
+++ b/lib/kernel/src/logger_proxy.erl
@@ -20,7 +20,7 @@
-module(logger_proxy).
%% API
--export([start_link/0, restart/0, log/2, child_spec/0]).
+-export([start_link/0, restart/0, log/2, child_spec/0, get_default_config/0]).
%% logger_olp callbacks
-export([init/1, handle_load/2, handle_info/2, terminate/2,
@@ -69,11 +69,7 @@ start_link() ->
%%
%% Burst limit is disabled, since this is only a proxy and we
%% don't want to limit bursts twice (here and in the handler).
- Opts = #{sync_mode_qlen=>500,
- drop_mode_qlen=>1000,
- flush_qlen=>5000,
- burst_limit_enable=>false},
- logger_olp:start_link(?SERVER,?MODULE,[],Opts).
+ logger_olp:start_link(?SERVER,?MODULE,[],get_default_config()).
%% Fun used for restarting this process after it has been killed due
%% to overload (must set overload_kill_enable=>true in opts)
@@ -97,6 +93,13 @@ child_spec() ->
type => worker,
modules => [?MODULE]}.
+get_default_config() ->
+ OlpDefault = logger_olp:get_default_opts(),
+ OlpDefault#{sync_mode_qlen=>500,
+ drop_mode_qlen=>1000,
+ flush_qlen=>5000,
+ burst_limit_enable=>false}.
+
%%%===================================================================
%%% gen_server callbacks
%%%===================================================================