Convert couch_log into behaviour
diff --git a/src/couch_log.erl b/src/couch_log.erl
index 8f85077..3b5e4f9 100644
--- a/src/couch_log.erl
+++ b/src/couch_log.erl
@@ -15,38 +15,63 @@
-export([debug/2, info/2, notice/2, warning/2, error/2, critical/2, alert/2, emergency/2]).
-export([set_level/1]).
+-export([behaviour_info/1]).
+
+behaviour_info(callbacks) ->
+ [{debug, 2}, {info, 2}, {notice, 2}, {warning, 2},
+ {error, 2}, {critical, 2}, {alert, 2}, {set_level, 1}];
+behaviour_info(_) ->
+ undefined.
+
debug(Fmt, Args) ->
+ {ok, Backend} = get_backend(),
catch couch_stats:increment_counter([couch_log, level, debug]),
- lager:debug(Fmt, Args).
+ Backend:debug(Fmt, Args).
info(Fmt, Args) ->
+ {ok, Backend} = get_backend(),
catch couch_stats:increment_counter([couch_log, level, info]),
- lager:info(Fmt, Args).
+ Backend:info(Fmt, Args).
notice(Fmt, Args) ->
+ {ok, Backend} = get_backend(),
catch couch_stats:increment_counter([couch_log, level, notice]),
- lager:notice(Fmt, Args).
+ Backend:notice(Fmt, Args).
warning(Fmt, Args) ->
+ {ok, Backend} = get_backend(),
catch couch_stats:increment_counter([couch_log, level, warning]),
- lager:warning(Fmt, Args).
+ Backend:warning(Fmt, Args).
error(Fmt, Args) ->
+ {ok, Backend} = get_backend(),
catch couch_stats:increment_counter([couch_log, level, 'error']),
- lager:error(Fmt, Args).
+ Backend:error(Fmt, Args).
critical(Fmt, Args) ->
+ {ok, Backend} = get_backend(),
catch couch_stats:increment_counter([couch_log, level, critical]),
- lager:critical(Fmt, Args).
+ Backend:critical(Fmt, Args).
alert(Fmt, Args) ->
+ {ok, Backend} = get_backend(),
catch couch_stats:increment_counter([couch_log, level, alert]),
- lager:alert(Fmt, Args).
+ Backend:alert(Fmt, Args).
emergency(Fmt, Args) ->
+ {ok, Backend} = get_backend(),
catch couch_stats:increment_counter([couch_log, level, emergency]),
- lager:emergency(Fmt, Args).
+ Backend:emergency(Fmt, Args).
set_level(Level) ->
- {ok, Handlers} = application:get_env(lager, handlers),
- [lager:set_loglevel(Handler, Level) || {Handler, _} <- Handlers].
+ {ok, Backend} = application:get_env(?MODULE, backend),
+ Backend:set_level(Level).
+
+get_backend() ->
+ case application:get_env(?MODULE, backend) of
+ undefined ->
+ ok = application:load(?MODULE),
+ get_backend();
+ {ok, Backend} ->
+ {ok, Backend}
+ end.