diff --git a/cmd/logcli/client.go b/cmd/logcli/client.go
index e91080c821b3070cbe95a339adc9917ad2b8f91c..d1664fca840a7c8ff2e4f7898909d6d45e93d6d3 100644
--- a/cmd/logcli/client.go
+++ b/cmd/logcli/client.go
@@ -4,6 +4,7 @@ import (
 	"encoding/json"
 	"fmt"
 	"io/ioutil"
+	"log"
 	"net/http"
 	"net/url"
 	"time"
@@ -48,7 +49,7 @@ func listLabelValues(name string) (*logproto.LabelResponse, error) {
 
 func doRequest(path string, out interface{}) error {
 	url := *addr + path
-	fmt.Println(url)
+	log.Print(url)
 
 	req, err := http.NewRequest("GET", url, nil)
 	if err != nil {
diff --git a/cmd/logcli/main.go b/cmd/logcli/main.go
index f91b04497d2dc71b53c82d79bdcd434c3eb6bcef..596bdda6f0f0e1795bfd60297f35afb3aa96bfed 100644
--- a/cmd/logcli/main.go
+++ b/cmd/logcli/main.go
@@ -1,7 +1,7 @@
 package main
 
 import (
-	"fmt"
+	"log"
 	"os"
 
 	kingpin "gopkg.in/alecthomas/kingpin.v2"
@@ -28,11 +28,12 @@ var (
 )
 
 func main() {
+	log.SetOutput(os.Stderr)
+
 	switch kingpin.MustParse(app.Parse(os.Args[1:])) {
 	case queryCmd.FullCommand():
 		if *addr == "" {
-			fmt.Println("Server address cannot be empty")
-			os.Exit(1)
+			log.Fatalln("Server address cannot be empty")
 		}
 		doQuery()
 	case labelsCmd.FullCommand():