diff --git a/README.org b/README.org index facccd6..77dbc20 100644 --- a/README.org +++ b/README.org @@ -1,5 +1,5 @@ * Overview - Lager (pronounced lAAger) is a logging framework for Erlang. Its purpose is + Lager (as in the beer) is a logging framework for Erlang. Its purpose is to provide a more traditional way to perform logging in an erlang application that plays nicely with traditional UNIX logging tools like logrotate and syslog. diff --git a/src/error_logger_lager_h.erl b/src/error_logger_lager_h.erl index 19db309..a61aaec 100644 --- a/src/error_logger_lager_h.erl +++ b/src/error_logger_lager_h.erl @@ -210,12 +210,24 @@ format_reason(Reason) -> Str. format_mfa({M, F, A}) when is_list(A) -> - io_lib:format("~w:~w("++string:join(lists:duplicate(length(A), "~w"), ", ")++")", [M, F | A]); + io_lib:format("~w:~w("++format_args(A, [])++")", [M, F | A]); format_mfa({M, F, A}) when is_integer(A) -> io_lib:format("~w:~w/~w", [M, F, A]); format_mfa(Other) -> io_lib:format("~w", [Other]). +format_args([], Acc) -> + string:join(lists:reverse(Acc), ", "); +format_args([H|T], Acc) when is_list(H) -> + case lager_stdlib:string_p(H) of + true -> + format_args(T, ["\"~s\""|Acc]); + _ -> + format_args(T, ["~w"|Acc]) + end; +format_args([_|T], Acc) -> + format_args(T, ["~w"|Acc]). + print_silly_list(L) when is_list(L) -> case lager_stdlib:string_p(L) of true -> L; diff --git a/src/lager_crash_log.erl b/src/lager_crash_log.erl index 56ea270..3c3a224 100644 --- a/src/lager_crash_log.erl +++ b/src/lager_crash_log.erl @@ -68,6 +68,7 @@ handle_call(_Call, _From, State) -> %% @private handle_cast({log, Event}, #state{name=Name, fd=FD, inode=Inode, flap=Flap} = State) -> + %% TODO these should probably be configurable and have saner defaults FmtMaxBytes = 1024, TermMaxSize = 500, %% borrowed from riak_err