diff --git a/itest.py b/itest.py
index d4f4f52..178acce 100644
--- a/itest.py
+++ b/itest.py
@@ -2,12 +2,17 @@
 import json
 import types
 import os.path
+import logging
+
 
 from io_scenario import io
 from ssh_copy_directory import copy_paths
 from utils import run_over_ssh
 
 
+logger = logging.getLogger("io-perf-tool")
+
+
 class IPerfTest(object):
     def __init__(self, on_result_cb):
         self.set_result_cb(on_result_cb)
@@ -58,10 +63,11 @@
 
     def run(self, conn):
         args = ['env', 'python2', self.io_py_remote] + self.script_opts
-        code, out, err = run_over_ssh(conn, " ".join(args))
-        self.on_result(code, out, err)
+        cmd = " ".join(args)
+        code, out, err = run_over_ssh(conn, cmd)
+        self.on_result(code, out, err, cmd)
 
-    def on_result(self, code, out, err):
+    def on_result(self, code, out, err, cmd):
         if 0 == code:
             try:
                 for line in out.split("\n"):
@@ -70,3 +76,6 @@
             except Exception as err:
                 msg = "Error during postprocessing results: {0!r}".format(err)
                 raise RuntimeError(msg)
+        else:
+            templ = "Command {0!r} failed with code {1}. Error output is:\n{2}"
+            logger.error(templ.format(cmd, code, err))
