rewrite from lager
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

80 líneas
1.8 KiB

hace 4 años
hace 4 años
hace 4 años
hace 4 años
hace 4 años
hace 4 años
hace 4 años
hace 4 años
hace 4 años
  1. -module(rumConfig).
  2. -include("eRum.hrl").
  3. -export([
  4. init/0
  5. , initSink/1
  6. , get/1
  7. , get/2
  8. , set/2
  9. , global_get/1
  10. , global_get/2
  11. , global_set/2
  12. , cleanup/0
  13. ]).
  14. -define(TBL, lager_config).
  15. -define(GLOBAL, '_global').
  16. %% For multiple sinks, the key is now the registered event name and the old key as a tuple.
  17. %% {{lager_event, loglevel}, Value} instead of {loglevel, Value}
  18. init() ->
  19. initSink(?RumDefSink),
  20. %% Need to be able to find the `lager_handler_watcher' for all handlers
  21. insert_new({?GLOBAL, handlers}, []),
  22. ok.
  23. initSink(Sink) ->
  24. %% 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
  25. insert_new({Sink, loglevel}, {element(2, rumUtil:config_to_mask(debug)), []}).
  26. global_get(Key) ->
  27. global_get(Key, undefined).
  28. global_get(Key, Default) ->
  29. get({?GLOBAL, Key}, Default).
  30. global_set(Key, Value) ->
  31. set({?GLOBAL, Key}, Value).
  32. get({_Sink, _Key} = FullKey) ->
  33. get(FullKey, undefined);
  34. get(Key) ->
  35. get({?RumDefSink, Key}, undefined).
  36. get({Sink, Key}, Default) ->
  37. lookup({Sink, Key}, Default);
  38. get(Key, Default) ->
  39. get({?RumDefSink, Key}, Default).
  40. set({Sink, Key}, Value) ->
  41. insert({Sink, Key}, Value);
  42. set(Key, Value) ->
  43. set({?RumDefSink, Key}, Value).
  44. insert(Key, Value) ->
  45. persistent_term:put({?TBL, Key}, Value).
  46. insert_new(Key, Value) ->
  47. try persistent_term:get({?TBL, Key}) of
  48. _Value ->
  49. false
  50. catch error:badarg ->
  51. insert(Key, Value),
  52. true
  53. end.
  54. lookup(Key, Default) ->
  55. try persistent_term:get({?TBL, Key}) of
  56. Value -> Value
  57. catch
  58. error:badarg ->
  59. Default
  60. end.
  61. cleanup() ->
  62. [persistent_term:erase(K) || {{?TBL, _} = K, _} <- persistent_term:get()].