-module(rumConfig).
|
|
|
|
-include("eRum.hrl").
|
|
|
|
-export([
|
|
init/0
|
|
, initSink/1
|
|
, get/1
|
|
, get/2
|
|
, set/2
|
|
, global_get/1
|
|
, global_get/2
|
|
, global_set/2
|
|
, cleanup/0
|
|
]).
|
|
|
|
-define(TBL, lager_config).
|
|
-define(GLOBAL, '_global').
|
|
|
|
%% For multiple sinks, the key is now the registered event name and the old key as a tuple.
|
|
%% {{lager_event, loglevel}, Value} instead of {loglevel, Value}
|
|
|
|
init() ->
|
|
initSink(?RumDefSink),
|
|
%% Need to be able to find the `lager_handler_watcher' for all handlers
|
|
insert_new({?GLOBAL, handlers}, []),
|
|
ok.
|
|
|
|
initSink(Sink) ->
|
|
%% use insert_new here so that if we're in an appup we don't mess anything up until lager is completely started, allow all messages to go through
|
|
insert_new({Sink, loglevel}, {element(2, rumUtil:config_to_mask(debug)), []}).
|
|
|
|
global_get(Key) ->
|
|
global_get(Key, undefined).
|
|
|
|
global_get(Key, Default) ->
|
|
get({?GLOBAL, Key}, Default).
|
|
|
|
global_set(Key, Value) ->
|
|
set({?GLOBAL, Key}, Value).
|
|
|
|
|
|
get({_Sink, _Key} = FullKey) ->
|
|
get(FullKey, undefined);
|
|
get(Key) ->
|
|
get({?RumDefSink, Key}, undefined).
|
|
|
|
get({Sink, Key}, Default) ->
|
|
lookup({Sink, Key}, Default);
|
|
get(Key, Default) ->
|
|
get({?RumDefSink, Key}, Default).
|
|
|
|
set({Sink, Key}, Value) ->
|
|
insert({Sink, Key}, Value);
|
|
set(Key, Value) ->
|
|
set({?RumDefSink, Key}, Value).
|
|
|
|
insert(Key, Value) ->
|
|
persistent_term:put({?TBL, Key}, Value).
|
|
|
|
insert_new(Key, Value) ->
|
|
try persistent_term:get({?TBL, Key}) of
|
|
_Value ->
|
|
false
|
|
catch error:badarg ->
|
|
insert(Key, Value),
|
|
true
|
|
end.
|
|
|
|
lookup(Key, Default) ->
|
|
try persistent_term:get({?TBL, Key}) of
|
|
Value -> Value
|
|
catch
|
|
error:badarg ->
|
|
Default
|
|
end.
|
|
|
|
cleanup() ->
|
|
[persistent_term:erase(K) || {{?TBL, _} = K, _} <- persistent_term:get()].
|
|
|