diff --git a/mo/web/__init__.py b/mo/web/__init__.py
index b4f5183e59ca4e4b2091675d0f79e67cdc06a464..2a16ef2a64fe897bf4bc91e81f52048fd52e0077 100644
--- a/mo/web/__init__.py
+++ b/mo/web/__init__.py
@@ -32,17 +32,6 @@ db.flask_db = SQLAlchemy(app, metadata=db.metadata)
 
 Bootstrap(app)  # make bootstrap libs accessible for the app
 
-# Nastavíme logování:
-#   - náš hlavní logger se jmenuje "mo"
-#   - app.logger se jmenuje "mo.web" a nepropaguje se do hlavního
-log_handler = flask.logging.default_handler
-log_formatter = logging.Formatter(fmt='%(asctime)-15s.%(msecs)03d %(levelname)-5.5s [%(process)s] (%(name)s) %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
-log_handler.setFormatter(log_formatter)
-app.logger.removeHandler(log_handler)
-app.logger.setLevel(logging.DEBUG)
-root_logger = logging.getLogger()
-root_logger.addHandler(log_handler)
-
 # Budeme používat české locale
 locale.setlocale(locale.LC_COLLATE, 'cs_CZ.UTF-8')
 
@@ -54,6 +43,40 @@ app.jinja_env.filters.update(timedelta=util_format.timedelta)
 app.jinja_env.filters.update(time_and_timedelta=util_format.time_and_timedelta)
 
 
+# Incializace logování
+
+def setup_logging():
+    # Logování v Pythonu je vymyšlené hezky, ale bohužel spousta modulů má tendenci
+    # konfigurovat si u svých loggerů náhodné handlery. Pokud chceme, aby bylo logování
+    # aspoň trochu jednotné, musíme jim to trochu předrátovat.
+
+    # Nastavíme root logger, aby logoval po našem do flaskového logu
+    log_handler = flask.logging.default_handler
+    log_formatter = logging.Formatter(fmt='%(asctime)-15s.%(msecs)03d %(levelname)-5.5s [%(process)s] (%(name)s) %(message)s',
+                                      datefmt='%Y-%m-%d %H:%M:%S')
+    log_handler.setFormatter(log_formatter)
+    root_logger = logging.getLogger()
+    root_logger.addHandler(log_handler)
+
+    # app.logger se jmenuje "mo.web" a propaguje se do root loggeru,
+    # takže nechceme, aby měl svůj handler.
+    app.logger.removeHandler(log_handler)
+    app.logger.setLevel(logging.DEBUG)
+
+    # sqlalchemy má logger, ke kterému si při prvním vypsání hlášky přidá handler,
+    # není-li tam zatím žádný. Tak přidáme dummy handler. Vše se propaguje do root loggeru.
+    sqla_logger = logging.getLogger('sqlalchemy.engine.base.Engine')
+    sqla_logger.addHandler(logging.NullHandler())
+
+    # werkzeug má vlastní handler s vlastním formátem hlášek, který už obsahuje timestamp,
+    # takže vypneme propagování
+    wz_logger = logging.getLogger('werkzeug')
+    wz_logger.propagate = False
+
+
+setup_logging()
+
+
 # Inicializace požadavků a nucená autorizace
 
 class NeedLoginError(werkzeug.exceptions.Forbidden):