diff --git a/middlewares/logger.go b/middlewares/logger.go
index 23e68f6f8..74617da54 100644
--- a/middlewares/logger.go
+++ b/middlewares/logger.go
@@ -56,7 +56,7 @@ func NewLogger(file string) *Logger {
 	if len(file) > 0 {
 		fi, err := os.OpenFile(file, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
 		if err != nil {
-			log.Fatal("Error opening file", err)
+			log.Error("Error opening file", err)
 		}
 		return &Logger{fi}
 	}
diff --git a/provider/consul_catalog.go b/provider/consul_catalog.go
index 4ff332517..cdf791c22 100644
--- a/provider/consul_catalog.go
+++ b/provider/consul_catalog.go
@@ -322,7 +322,7 @@ func (provider *ConsulCatalog) Provide(configurationChan chan<- types.ConfigMess
 		}
 		err := backoff.RetryNotify(worker, backoff.NewExponentialBackOff(), notify)
 		if err != nil {
-			log.Fatalf("Cannot connect to consul server %+v", err)
+			log.Errorf("Cannot connect to consul server %+v", err)
 		}
 	})
 
diff --git a/provider/docker.go b/provider/docker.go
index 923aca67f..baea5cf9c 100644
--- a/provider/docker.go
+++ b/provider/docker.go
@@ -141,7 +141,7 @@ func (provider *Docker) Provide(configurationChan chan<- types.ConfigMessage, po
 		}
 		err := backoff.RetryNotify(operation, backoff.NewExponentialBackOff(), notify)
 		if err != nil {
-			log.Fatalf("Cannot connect to docker server %+v", err)
+			log.Errorf("Cannot connect to docker server %+v", err)
 		}
 	})
 
diff --git a/provider/kubernetes.go b/provider/kubernetes.go
index 6fde7f5f3..aaeba1fec 100644
--- a/provider/kubernetes.go
+++ b/provider/kubernetes.go
@@ -154,7 +154,7 @@ func (provider *Kubernetes) Provide(configurationChan chan<- types.ConfigMessage
 		}
 		err := backoff.RetryNotify(operation, backOff, notify)
 		if err != nil {
-			log.Fatalf("Cannot connect to Kubernetes server %+v", err)
+			log.Errorf("Cannot connect to Kubernetes server %+v", err)
 		}
 	})
 
diff --git a/provider/marathon.go b/provider/marathon.go
index 52a7f7522..d33186e7e 100644
--- a/provider/marathon.go
+++ b/provider/marathon.go
@@ -110,7 +110,7 @@ func (provider *Marathon) Provide(configurationChan chan<- types.ConfigMessage,
 	}
 	err := backoff.RetryNotify(operation, backoff.NewExponentialBackOff(), notify)
 	if err != nil {
-		log.Fatalf("Cannot connect to Marathon server %+v", err)
+		log.Errorf("Cannot connect to Marathon server %+v", err)
 	}
 	return nil
 }
diff --git a/provider/mesos.go b/provider/mesos.go
index 25ac4056e..505330218 100644
--- a/provider/mesos.go
+++ b/provider/mesos.go
@@ -112,7 +112,7 @@ func (provider *Mesos) Provide(configurationChan chan<- types.ConfigMessage, poo
 	}
 	err := backoff.RetryNotify(operation, backoff.NewExponentialBackOff(), notify)
 	if err != nil {
-		log.Fatalf("Cannot connect to mesos server %+v", err)
+		log.Errorf("Cannot connect to mesos server %+v", err)
 	}
 	return nil
 }
@@ -393,9 +393,9 @@ func detectMasters(zk string, masters []string) <-chan []string {
 	if zk != "" {
 		log.Debugf("Starting master detector for ZK ", zk)
 		if md, err := detector.New(zk); err != nil {
-			log.Fatalf("failed to create master detector: %v", err)
+			log.Errorf("failed to create master detector: %v", err)
 		} else if err := md.Detect(detect.NewMasters(masters, changed)); err != nil {
-			log.Fatalf("failed to initialize master detector: %v", err)
+			log.Errorf("failed to initialize master detector: %v", err)
 		}
 	} else {
 		changed <- masters
diff --git a/server.go b/server.go
index 3b2ad3e8b..cafc477c8 100644
--- a/server.go
+++ b/server.go
@@ -413,7 +413,7 @@ func (server *Server) prepareServer(entryPointName string, router *middlewares.H
 	negroni.UseHandler(router)
 	tlsConfig, err := server.createTLSConfig(entryPointName, entryPoint.TLS, router)
 	if err != nil {
-		log.Fatalf("Error creating TLS config %s", err)
+		log.Errorf("Error creating TLS config %s", err)
 		return nil, err
 	}
 
@@ -431,7 +431,7 @@ func (server *Server) prepareServer(entryPointName string, router *middlewares.H
 		TLSConfig: tlsConfig,
 	}, tlsConfig)
 	if err != nil {
-		log.Fatalf("Error hijacking server %s", err)
+		log.Errorf("Error hijacking server %s", err)
 		return nil, err
 	}
 	return gracefulServer, nil
diff --git a/traefik.go b/traefik.go
index aa84b9018..e20e11456 100644
--- a/traefik.go
+++ b/traefik.go
@@ -203,7 +203,7 @@ func run(traefikConfiguration *TraefikConfiguration) {
 	// logging
 	level, err := log.ParseLevel(strings.ToLower(globalConfiguration.LogLevel))
 	if err != nil {
-		log.Fatal("Error getting level", err)
+		log.Error("Error getting level", err)
 	}
 	log.SetLevel(level)
 	if len(globalConfiguration.TraefikLogsFile) > 0 {
@@ -214,7 +214,7 @@ func run(traefikConfiguration *TraefikConfiguration) {
 			}
 		}()
 		if err != nil {
-			log.Fatal("Error opening file", err)
+			log.Error("Error opening file", err)
 		} else {
 			log.SetOutput(fi)
 			log.SetFormatter(&log.TextFormatter{DisableColors: true, FullTimestamp: true, DisableSorting: true})