Basic implementation
diff --git a/rebar.config b/rebar.config
new file mode 100644
index 0000000..abc8b1b
--- /dev/null
+++ b/rebar.config
@@ -0,0 +1,5 @@
+{deps, [
+    {lager, ".*", {git, "https://git-wip-us.apache.org/repos/asf/couchdb-lager.git", {branch, "master"}}}
+]}.
+
+{erl_opts, [debug_info, {parse_transform, lager_transform}]}.
diff --git a/src/couch_log_lager.app.src b/src/couch_log_lager.app.src
new file mode 100644
index 0000000..1cc9454
--- /dev/null
+++ b/src/couch_log_lager.app.src
@@ -0,0 +1,19 @@
+% Licensed under the Apache License, Version 2.0 (the "License"); you may not
+% use this file except in compliance with the License. You may obtain a copy of
+% the License at
+%
+%   http://www.apache.org/licenses/LICENSE-2.0
+%
+% Unless required by applicable law or agreed to in writing, software
+% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+% License for the specific language governing permissions and limitations under
+% the License.
+
+{application, couch_log_lager, [
+    {description, "CouchDB Log backend with lager"},
+    {vsn, git},
+    {modules, [couch_log_lager]},
+    {registered, []},
+    {applications, [kernel, stdlib, lager]}
+]}.
diff --git a/src/couch_log_lager.erl b/src/couch_log_lager.erl
new file mode 100644
index 0000000..1938365
--- /dev/null
+++ b/src/couch_log_lager.erl
@@ -0,0 +1,55 @@
+% Licensed under the Apache License, Version 2.0 (the "License"); you may not
+% use this file except in compliance with the License. You may obtain a copy of
+% the License at
+%
+%   http://www.apache.org/licenses/LICENSE-2.0
+%
+% Unless required by applicable law or agreed to in writing, software
+% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+% License for the specific language governing permissions and limitations under
+% the License.
+
+-module(couch_log_lager).
+
+-behaviour(couch_log).
+
+-export([
+    debug/2,
+    info/2,
+    notice/2,
+    warning/2,
+    error/2,
+    critical/2,
+    alert/2,
+    emergency/2,
+    set_level/1
+]).
+
+debug(Fmt, Args) ->
+    lager:debug(Fmt, Args).
+
+info(Fmt, Args) ->
+    lager:info(Fmt, Args).
+
+notice(Fmt, Args) ->
+    lager:notice(Fmt, Args).
+
+warning(Fmt, Args) ->
+    lager:warning(Fmt, Args).
+
+error(Fmt, Args) ->
+    lager:error(Fmt, Args).
+
+critical(Fmt, Args) ->
+    lager:critical(Fmt, Args).
+
+alert(Fmt, Args) ->
+    lager:alert(Fmt, Args).
+
+emergency(Fmt, Args) ->
+    lager:emergency(Fmt, Args).
+
+set_level(Level) ->
+    {ok, Handlers} = application:get_env(lager, handlers),
+    [lager:set_loglevel(Handler, Level) || {Handler, _} <- Handlers].