diff --git a/dockerfiles/email/postfix/Dockerfile b/dockerfiles/email/postfix/Dockerfile
index c92381a094245c5523bd2793d64506e06ea305e4..175970944be22e7fefdb169e7eeb06fbd67b9433 100644
--- a/dockerfiles/email/postfix/Dockerfile
+++ b/dockerfiles/email/postfix/Dockerfile
@@ -10,7 +10,6 @@ RUN apt-get update \
 	&& echo "postfix postfix/root_address string 'ROOTMAIL@EXAMPLE.COM'" | debconf-set-selections \
 	&& apt-get install -q -y \
 		postfix \
-		rsyslog \
 		supervisor \
 	&& rm -rf /var/lib/apt/lists/*
 
@@ -18,7 +17,7 @@ COPY install.sh install.sh
 
 RUN chmod 755 /install.sh
 
-VOLUME ["/var/spool/mail", "/var/log"]
+VOLUME ["/var/spool/mail"]
 
 EXPOSE 25
 
diff --git a/dockerfiles/email/postfix/install.sh b/dockerfiles/email/postfix/install.sh
index a4e30bd94964e33b994189c70cf64066a689274b..d08694bbf21030f3e351b0a51da2a5ff7e627396 100755
--- a/dockerfiles/email/postfix/install.sh
+++ b/dockerfiles/email/postfix/install.sh
@@ -16,8 +16,6 @@ command = /etc/init.d/postfix start
 startsecs = 0
 autorestart = false
 
-[program:rsyslog]
-command=/usr/sbin/rsyslogd -n
 EOF
 
 # put the same FQDN in /data/hostname and in reverse DNS
diff --git a/dockerfiles/load-balancer/confd/confd/templates/haproxy.cfg.tmpl b/dockerfiles/load-balancer/confd/confd/templates/haproxy.cfg.tmpl
index 39620743352f15f5d155b90941b69a26daded8fe..c534eaa113ba214eebc7a87a50ea7a0d8426ce73 100644
--- a/dockerfiles/load-balancer/confd/confd/templates/haproxy.cfg.tmpl
+++ b/dockerfiles/load-balancer/confd/confd/templates/haproxy.cfg.tmpl
@@ -1,4 +1,6 @@
 global
+  log /dev/log local0 info
+  log /dev/log local0 notice
   maxconn 4096
   user haproxy
   group haproxy
@@ -6,6 +8,7 @@ global
   ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
 
 defaults
+  log global
   mode http
   option forwardfor
   option httpclose
@@ -16,6 +19,7 @@ defaults
   timeout client 50000
   timeout server 50000
 
+
 frontend https-in
 mode http
   bind *:443 ssl no-sslv3 crt-list /etc/haproxy/crt-list crt /etc/haproxy/approved-certs/default.pem
diff --git a/dockerfiles/load-balancer/haproxy/Dockerfile b/dockerfiles/load-balancer/haproxy/Dockerfile
index 991ba67f794ab8037ab9c7099bbd0efe4eed829c..d82471e73d365060d1001aa14108cd9da405aea3 100644
--- a/dockerfiles/load-balancer/haproxy/Dockerfile
+++ b/dockerfiles/load-balancer/haproxy/Dockerfile
@@ -10,7 +10,7 @@ RUN \
 
 VOLUME ["/etc/haproxy"]
 ENTRYPOINT ["haproxy"]
-CMD ["-d", "-f", "/etc/haproxy/haproxy.cfg"]
+CMD ["-f", "/etc/haproxy/haproxy.cfg"]
 EXPOSE 80
 EXPOSE 443
 
diff --git a/dockerfiles/load-balancer/haproxy/README.md b/dockerfiles/load-balancer/haproxy/README.md
index e839cc6f547c843b229162ddaa3e5ca11c109ada..e98557c38c5c9d58239851f57793549bbb04fbf0 100644
--- a/dockerfiles/load-balancer/haproxy/README.md
+++ b/dockerfiles/load-balancer/haproxy/README.md
@@ -4,8 +4,6 @@ The smallest HAproxy docker image in town ;)
 
 ## Run
 
-This image will log everything to stdout/stderr. Somehow, it respects 12-Factor App. But it uses the debug flag of HAProxy. If you have a better idea, please read this [blog post](http://pierre-o.fr/blog/2014/08/27/haproxy-coreos/) first.
-
 ```bash
 docker run\
   -v /haproxy-config:/etc/haproxy\
diff --git a/dockerfiles/rsyslog/Dockerfile b/dockerfiles/rsyslog/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..96ff42cc5c354d0ebd202dd43b94faca5fd7b0a2
--- /dev/null
+++ b/dockerfiles/rsyslog/Dockerfile
@@ -0,0 +1,14 @@
+FROM debian:jessie
+
+ENV DEBIAN_FRONTEND noninteractive
+RUN apt-get update && \
+    apt-get install -q -y rsyslog && \
+    rm -rf /var/lib/apt/lists/*
+
+ADD haproxy /etc/logrotate.d/haproxy
+ADD postfix /etc/logrotate.d/postfix
+
+VOLUME [ "/dev", "/var/log" ]
+
+ENTRYPOINT [ "rsyslogd", "-n" ]
+
diff --git a/dockerfiles/rsyslog/haproxy b/dockerfiles/rsyslog/haproxy
new file mode 100644
index 0000000000000000000000000000000000000000..9bba22f0bf6529ddde8d4cb6a1a3579737bb5a97
--- /dev/null
+++ b/dockerfiles/rsyslog/haproxy
@@ -0,0 +1,14 @@
+/var/log/haproxy*.log
+{
+    rotate 4
+    weekly
+    missingok
+    notifempty
+    compress
+    delaycompress
+    sharedscripts
+    postrotate
+        reload rsyslog >/dev/null 2>&1 || true
+    endscript
+}
+
diff --git a/dockerfiles/rsyslog/postfix b/dockerfiles/rsyslog/postfix
new file mode 100644
index 0000000000000000000000000000000000000000..79fdf3f80520c9f63d2f43b80e30d82495c48fec
--- /dev/null
+++ b/dockerfiles/rsyslog/postfix
@@ -0,0 +1,14 @@
+/var/log/mail.*
+{
+    rotate 4
+    weekly
+    missingok
+    notifempty
+    compress
+    delaycompress
+    sharedscripts
+    postrotate
+        reload rsyslog >/dev/null 2>&1 || true
+    endscript
+}
+
diff --git a/unit-files/haproxy.service b/unit-files/haproxy.service
index 6345b4ccd96c30ee8c0a758bc737eb5e4b8b38cd..0a55ca92664ff8603689aff82fafc931dd9ea601 100644
--- a/unit-files/haproxy.service
+++ b/unit-files/haproxy.service
@@ -6,6 +6,7 @@ Requires=docker.service
 
 # Dependency ordering
 After=docker.service
+After=rsyslog.service
 
 [Service]
 Restart=always
@@ -16,6 +17,7 @@ ExecStartPre=-/usr/bin/docker rm %p
 ExecStart=/usr/bin/docker run \
   --rm \
   --name %p \
+  -v /data/runtime/dev/log:/dev/log \
   -v /data/runtime/haproxy:/etc/haproxy \
   -p 80:80 \
   -p 443:443 \
diff --git a/unit-files/mysql@.service b/unit-files/mysql@.service
index 5892aec4d9e6bd6eefcd3c3e81f2af547f423908..ce276a060d6b08e6725f19f49709dfbfe55fad8a 100644
--- a/unit-files/mysql@.service
+++ b/unit-files/mysql@.service
@@ -34,6 +34,7 @@ ExecStartPre=/bin/bash -euxc ' \
 ExecStart=/opt/bin/systemd-docker run \
   --rm \
   --name %p-%i \
+  -v /data/runtime/domains/%i/log/mysql:/var/log/mysql \
   -v /data/runtime/domains/%i/%p/db_files:/var/lib/mysql \
   --env-file /data/domains/%i/%p/.env \
   pierreozoux/mysql
diff --git a/unit-files/postfix.service b/unit-files/postfix.service
index 3ccc0cbd919796bdb1a0c49ec0278d11ba0bdcd9..45180789e338eedf43c4b666546abcb8e21066f3 100644
--- a/unit-files/postfix.service
+++ b/unit-files/postfix.service
@@ -6,6 +6,7 @@ Requires=docker.service
 
 # Dependency ordering
 After=docker.service
+After=rsyslog.service
 
 [Service]
 Restart=always
@@ -16,6 +17,7 @@ ExecStartPre=-/usr/bin/docker rm %p
 ExecStart=/usr/bin/docker run \
   --rm \
   --name %p \
+  -v /data/runtime/dev/log:/dev/log \
   -v /data/runtime/postfix/:/data \
   -p 25:25 \
   pierreozoux/postfix
diff --git a/unit-files/rsyslog.service b/unit-files/rsyslog.service
new file mode 100644
index 0000000000000000000000000000000000000000..7c5d058cf82ea82ebd66445e986d6a82e5cb62ef
--- /dev/null
+++ b/unit-files/rsyslog.service
@@ -0,0 +1,27 @@
+[Unit]
+Description=%p
+
+# Requirements
+Requires=docker.service
+
+# Dependency ordering
+After=docker.service
+
+[Service]
+Restart=always
+RestartSec=20
+TimeoutStartSec=0
+ExecStartPre=-/usr/bin/docker kill %p
+ExecStartPre=-/usr/bin/docker rm %p
+ExecStart=/usr/bin/docker run \
+  --rm \
+  --name rsyslog \
+  -v /data/runtime/dev:/dev \
+  -v /data/runtime/log:/var/log \
+  pierreozoux/rsyslog
+ExecReload=/usr/bin/docker restart %p
+ExecStop=/usr/bin/docker stop %p
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/unit-files/web@.service b/unit-files/web@.service
index 70005339eacbca9a52808bff1d5371a2e4605563..5dbd89f4df3bbc63f7d754a87a933cbd2dd502f0 100644
--- a/unit-files/web@.service
+++ b/unit-files/web@.service
@@ -27,6 +27,7 @@ ExecStart=/bin/bash -euxc ' \
   /opt/bin/systemd-docker --env run \
     --rm \
     --name %i \
+    -v /data/runtime/domains/%i/log/apache2:/var/log/apache2 \
     ${DOCKER_ARGUMENTS} \
     pierreozoux/${APPLICATION}'
 ExecReload=/usr/bin/docker restart %i