瀏覽代碼

Various bugfixes of various levels of desperation

pull/264/head
John R. Daily 10 年之前
父節點
當前提交
a462c046fe
共有 8 個檔案被更改,包括 25 行新增20 行删除
  1. +2
    -2
      src/error_logger_lager_h.erl
  2. +4
    -2
      src/lager.app.src
  3. +2
    -2
      src/lager.erl
  4. +2
    -2
      src/lager_app.erl
  5. +6
    -6
      src/lager_backend_throttle.erl
  6. +1
    -2
      src/lager_console_backend.erl
  7. +4
    -3
      src/lager_file_backend.erl
  8. +4
    -1
      src/lager_handler_watcher.erl

+ 2
- 2
src/error_logger_lager_h.erl 查看文件

@ -74,7 +74,7 @@ set_high_water(N) ->
gen_event:call(error_logger, ?MODULE, {set_high_water, N}, infinity).
-spec init(any()) -> {ok, #state{}}.
init([HighWaterMark]) ->
init([{sink, Sink}, HighWaterMark]) ->
{ok, #state{hwm=HighWaterMark}}.
handle_call({set_high_water, N}, State) ->
@ -318,7 +318,7 @@ format_reason({function_clause, [MFA|_]}) ->
format_reason({if_clause, [MFA|_]}) ->
["no true branch found while evaluating if expression in ", format_mfa(MFA)];
format_reason({{try_clause, Val}, [MFA|_]}) ->
["no try clause matching ", print_val(Val), " in ", format_mfa(MFA)];
["no try clause matching ", print_val(Val), " in ", format_mfa(MFA)];
format_reason({badarith, [MFA|_]}) ->
["bad arithmetic expression in ", format_mfa(MFA)];
format_reason({{badmatch, Val}, [MFA|_]}) ->

+ 4
- 2
src/lager.app.src 查看文件

@ -53,11 +53,13 @@
%% to async_threshold - async_threshold_window
{async_threshold_window, 5}, %% <-- per sink
{extra_sinks, [
{audit, [{lager_file_backend,
{audit,
[{handlers,
[{lager_file_backend,
[{file, "log/audit.log"}, {level, info},
{size, 10485760}, {date, "$D0"}, {count, 10}]
}
]} %% Security audit sink has no async behavior
]}]} %% Security audit sink has no async behavior
]}
]}
]}.

+ 2
- 2
src/lager.erl 查看文件

@ -384,7 +384,7 @@ posix_error(Error) ->
%% @private
get_loglevels(Sink) ->
[gen_event:call(Handler, get_loglevel, infinity) ||
[gen_event:call(Sink, Handler, get_loglevel, infinity) ||
Handler <- gen_event:which_handlers(Sink)].
%% @private
@ -401,7 +401,7 @@ add_trace_to_loglevel_config(Trace, Sink) ->
%% @doc recalculate min log level
update_loglevel_config(Sink) ->
{_, Traces} = lager_config:get({Sink, loglevel}),
{_, Traces} = lager_config:get({Sink, loglevel}, {ignore_me, []}),
MinLog = minimum_loglevel(get_loglevels(Sink)),
lager_config:set({Sink, loglevel}, {MinLog, Traces}).

+ 2
- 2
src/lager_app.erl 查看文件

@ -86,7 +86,7 @@ start_handlers(Sink, {ok, Handlers}) ->
start_handler(Sink, Module, Config) ->
{ok, Watcher} = supervisor:start_child(lager_handler_watcher_sup,
[Sink, Module, Config]),
BackendId = Module:config_to_id(Config),
BackendId = maybe_make_handler_id(Module, Config),
{BackendId, Watcher, Sink}.
interpret_hwm(undefined) ->
@ -104,7 +104,7 @@ start_error_logger_handler({ok, false}, _HWM, _Whitelist) ->
start_error_logger_handler(_, HWM, undefined) ->
start_error_logger_handler(ignore_me, HWM, {ok, []});
start_error_logger_handler(_, HWM, {ok, WhiteList}) ->
case supervisor:start_child(lager_handler_watcher_sup, [error_logger, error_logger_lager_h, [HWM]]) of
case supervisor:start_child(lager_handler_watcher_sup, [?DEFAULT_SINK, error_logger_lager_h, [HWM]]) of
{ok, _} ->
[begin error_logger:delete_report_handler(X), X end ||
X <- gen_event:which_handlers(error_logger) -- [error_logger_lager_h | WhiteList]];

+ 6
- 6
src/lager_backend_throttle.erl 查看文件

@ -30,14 +30,15 @@
code_change/3]).
-record(state, {
sink :: atom(),
hwm :: non_neg_integer(),
window_min :: non_neg_integer(),
async = true :: boolean()
}).
init([Hwm, Window]) ->
lager_config:set(async, true),
{ok, #state{hwm=Hwm, window_min=Hwm - Window}}.
init([{sink, Sink}, Hwm, Window]) ->
lager_config:set({Sink, async}, true),
{ok, #state{sink=Sink, hwm=Hwm, window_min=Hwm - Window}}.
handle_call(get_loglevel, State) ->
@ -52,11 +53,11 @@ handle_event({log, _Message},State) ->
case {Len > State#state.hwm, Len < State#state.window_min, State#state.async} of
{true, _, true} ->
%% need to flip to sync mode
lager_config:set(async, false),
lager_config:set({State#state.sink, async}, false),
{ok, State#state{async=false}};
{_, true, false} ->
%% need to flip to async mode
lager_config:set(async, true),
lager_config:set({State#state.sink, async}, true),
{ok, State#state{async=true}};
_ ->
%% nothing needs to change
@ -75,4 +76,3 @@ terminate(_Reason, _State) ->
%% @private
code_change(_OldVsn, State, _Extra) ->
{ok, State}.

+ 1
- 2
src/lager_console_backend.erl 查看文件

@ -72,10 +72,9 @@ init([Level,{Formatter,FormatterConfig}]) when is_atom(Formatter) ->
_:_ ->
{error, {fatal, bad_log_level}}
end;
init(Level) ->
init([{sink, _Sink}, Level]) ->
init([Level,{lager_default_formatter,?TERSE_FORMAT ++ [eol()]}]).
%% @private
handle_call(get_loglevel, #state{level=Level} = State) ->
{ok, Level, State};

+ 4
- 3
src/lager_file_backend.erl 查看文件

@ -80,6 +80,8 @@
{formatter_config, term()}.
-spec init([option(),...]) -> {ok, #state{}} | {error, bad_config}.
init([{sink, _Sink}|Options]) ->
init(Options);
init({FileName, LogLevel}) when is_list(FileName), is_atom(LogLevel) ->
%% backwards compatability hack
init([{file, FileName}, {level, LogLevel}]);
@ -237,7 +239,7 @@ do_write(#state{fd=FD, name=Name, flap=Flap} = State, Level, Msg) ->
Flap
end,
State#state{flap=Flap2};
_ ->
_ ->
State
end.
@ -711,7 +713,7 @@ filesystem_test_() ->
{"tracing with options should work",
fun() ->
file:delete("foo.log"),
{ok, _} = lager:trace_file("foo.log", [{module, ?MODULE}], [{size, 20}, {check_interval, 1}]),
{ok, _} = lager:trace_file("foo.log", [{module, ?MODULE}], [{size, 20}, {check_interval, 1}]),
lager:error("Test message"),
?assertNot(filelib:is_regular("foo.log.0")),
lager:error("Test message"),
@ -809,4 +811,3 @@ config_validation_test_() ->
-endif.

+ 4
- 1
src/lager_handler_watcher.erl 查看文件

@ -47,8 +47,11 @@ start_link(Sink, Module, Config) ->
start(Sink, Module, Config) ->
gen_server:start(?MODULE, [Sink, Module, Config], []).
init([Sink, Module, Config]) when is_list(Config) ->
install_handler(Sink, Module, [{sink, Sink}|Config]),
{ok, #state{sink=Sink, module=Module, config=Config}};
init([Sink, Module, Config]) ->
install_handler(Sink, Module, Config),
install_handler(Sink, Module, [{sink, Sink}]++[Config]),
{ok, #state{sink=Sink, module=Module, config=Config}}.
handle_call(_Call, _From, State) ->

Loading…
取消
儲存