diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,12 @@
+## 0.3.9.1
+### Added
+* Add timestamp to output commands:
+```
+[16:29:58,  2019-01-23 (-05)] INFO -- : $ find /tmp/hapistrano/releases/ -maxdepth 1 -type d
+/tmp/hapistrano/releases/
+/tmp/hapistrano/releases/20190123212933
+```
+
 ## 0.3.9.0
 ### Added
 * Support to deploy to a host that has default `zsh` shell.
diff --git a/hapistrano.cabal b/hapistrano.cabal
--- a/hapistrano.cabal
+++ b/hapistrano.cabal
@@ -1,5 +1,5 @@
 name:                hapistrano
-version:             0.3.9.0
+version:             0.3.9.1
 synopsis:            A deployment library for Haskell applications
 description:
   .
diff --git a/spec/System/HapistranoSpec.hs b/spec/System/HapistranoSpec.hs
--- a/spec/System/HapistranoSpec.hs
+++ b/spec/System/HapistranoSpec.hs
@@ -6,6 +6,7 @@
 
 import           Control.Monad
 import           Control.Monad.Reader
+import           Data.List                  (isPrefixOf)
 import           Data.Maybe                 (catMaybes)
 import           Numeric.Natural
 import           Path
@@ -33,10 +34,10 @@
       it "redirects commands' output to stdout first" $
         let (Just commandTest) = Hap.mkGenericCommand "echo \"hapistrano\"; sleep 2; echo \"onartsipah\""
             commandExecution = Hap.execWithInheritStdout commandTest
-            expectedOutput = "hapistrano\nonartsipah\n*** localhost ******************************************************************\n$ echo \"hapistrano\"; sleep 2; echo \"onartsipah\"\n"
+            expectedOutput = "hapistrano\nonartsipah"
          in do
            actualOutput <- capture_ (runHap commandExecution)
-           actualOutput `Hspec.shouldBe` expectedOutput
+           expectedOutput `Hspec.shouldSatisfy` (`isPrefixOf` actualOutput)
 
   describe "readScript" $
     it "performs all the necessary normalizations correctly" $ do
diff --git a/src/System/Hapistrano/Core.hs b/src/System/Hapistrano/Core.hs
--- a/src/System/Hapistrano/Core.hs
+++ b/src/System/Hapistrano/Core.hs
@@ -28,6 +28,7 @@
 import           Control.Monad.Reader
 import           Control.Concurrent.STM (atomically)
 import           Data.Proxy
+import           Data.Time
 import           Path
 import           System.Exit
 import           System.Hapistrano.Commands
@@ -163,11 +164,15 @@
   -> Hapistrano String -- ^ Raw stdout output of that program
 exec' cmd readProcessOutput = do
   Config {..} <- ask
-  let hostLabel =
+  time <- liftIO getZonedTime
+
+  let timeStampFormat = "%T,  %F (%Z)"
+      printableTime = formatTime defaultTimeLocale timeStampFormat time
+      hostLabel =
         case configSshOptions of
           Nothing              -> "localhost"
           Just SshOptions {..} -> sshHost ++ ":" ++ show sshPort
-  liftIO $ configPrint StdoutDest (putLine hostLabel ++ "$ " ++ cmd ++ "\n")
+  liftIO $ configPrint StdoutDest (putLine hostLabel ++ "[" ++ printableTime ++ "] INFO -- : " ++ "$ " ++ cmd ++ "\n")
   (exitCode', stdout', stderr') <- liftIO readProcessOutput
   unless (null stdout') . liftIO $
     configPrint StdoutDest stdout'
