|
20 | 20 |
|
21 | 21 | %% API |
22 | 22 | -export([start_logger/0, log_locations/0, fold_sinks/2, |
23 | | - broker_is_started/0]). |
| 23 | + broker_is_started/0, set_log_level/1]). |
24 | 24 |
|
25 | 25 | %% For test purposes |
26 | 26 | -export([configure_lager/0]). |
@@ -56,6 +56,34 @@ broker_is_started() -> |
56 | 56 | ok |
57 | 57 | end. |
58 | 58 |
|
| 59 | +set_log_level(Level) -> |
| 60 | + IsValidLevel = lists:member(Level, lager_util:levels()), |
| 61 | + set_log_level(IsValidLevel, Level). |
| 62 | + |
| 63 | +set_log_level(true, Level) -> |
| 64 | + SinksAndHandlers = [{Sink, gen_event:which_handlers(Sink)} || |
| 65 | + Sink <- lager:list_all_sinks()], |
| 66 | + set_sink_log_level(SinksAndHandlers, Level); |
| 67 | +set_log_level(_, Level) -> |
| 68 | + {error, {invalid_log_level, Level}}. |
| 69 | + |
| 70 | +set_sink_log_level([], _Level) -> |
| 71 | + ok; |
| 72 | +set_sink_log_level([{Sink, Handlers}|Rest], Level) -> |
| 73 | + set_sink_handler_log_level(Sink, Handlers, Level), |
| 74 | + set_sink_log_level(Rest, Level). |
| 75 | + |
| 76 | +set_sink_handler_log_level(_Sink, [], _Level) -> |
| 77 | + ok; |
| 78 | +set_sink_handler_log_level(Sink, [Handler|Rest], Level) when is_atom(Handler) -> |
| 79 | + ok = lager:set_loglevel(Sink, Handler, undefined, Level), |
| 80 | + set_sink_handler_log_level(Sink, Rest, Level); |
| 81 | +set_sink_handler_log_level(Sink, [{Handler, Id}|Rest], Level) -> |
| 82 | + ok = lager:set_loglevel(Sink, Handler, Id, Level), |
| 83 | + set_sink_handler_log_level(Sink, Rest, Level); |
| 84 | +set_sink_handler_log_level(Sink, [_|Rest], Level) -> |
| 85 | + set_sink_handler_log_level(Sink, Rest, Level). |
| 86 | + |
59 | 87 | log_locations() -> |
60 | 88 | ensure_lager_configured(), |
61 | 89 | DefaultHandlers = application:get_env(lager, handlers, []), |
|
0 commit comments