diff --git a/src/main/java/com/googlesource/gerrit/plugins/cookbook/Module.java b/src/main/java/com/googlesource/gerrit/plugins/cookbook/Module.java
index 590b487..5f88178 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/cookbook/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cookbook/Module.java
@@ -20,6 +20,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.gerrit.extensions.annotations.Exports;
 import com.google.gerrit.extensions.common.InheritableBoolean;
+import com.google.gerrit.extensions.events.UsageDataPublishedListener;
 import com.google.gerrit.extensions.registration.DynamicSet;
 import com.google.gerrit.extensions.restapi.RestApiModule;
 import com.google.gerrit.extensions.webui.PatchSetWebLink;
@@ -42,6 +43,8 @@
     DynamicSet.bind(binder(), ProjectWebLink.class).to(HelloWeblink.class);
     DynamicSet.bind(binder(), ServerPluginProvider.class).to(
         HelloSshPluginProvider.class);
+    DynamicSet.bind(binder(), UsageDataPublishedListener.class).to(UsageDataLogger.class);
+
     install(new RestApiModule() {
       @Override
       protected void configure() {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/cookbook/UsageDataLogger.java b/src/main/java/com/googlesource/gerrit/plugins/cookbook/UsageDataLogger.java
new file mode 100644
index 0000000..995e68c
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/cookbook/UsageDataLogger.java
@@ -0,0 +1,40 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// 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.
+
+package com.googlesource.gerrit.plugins.cookbook;
+
+import com.google.gerrit.extensions.events.UsageDataPublishedListener;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+class UsageDataLogger implements UsageDataPublishedListener {
+
+  private static final Logger log = LoggerFactory.getLogger(UsageDataLogger.class);
+
+  @Override
+  public void onUsageDataPublished(Event event) {
+    if (log.isInfoEnabled()) {
+      log.info(String.format("Usage data for "
+          + "%s at %s", event.getMetaData().getDescription(), event.getInstant()));
+      log.info(String.format("project name - %s", event.getMetaData().getName()));
+      String unitSymbol = event.getMetaData().getUnitSymbol();
+      for (Data data : event.getData()) {
+        log.info(String.format("%s - %d %s", data.getProjectName(), data.getValue(),
+            unitSymbol));
+      }
+      log.info("");
+    }
+  }
+}
