diff --git a/gajim/common/modules/base.py b/gajim/common/modules/base.py
index 6607ea5fffdcbfb9236c633b94f85a22e52c696e..a8bc821bc20ec946825de52af0b2d1234fec6364 100644
--- a/gajim/common/modules/base.py
+++ b/gajim/common/modules/base.py
@@ -24,6 +24,7 @@ import nbxmpp
 from nbxmpp.structs import StanzaHandler
 
 from gajim.common import app
+from gajim.common.modules.util import LogAdapter
 
 log = logging.getLogger('gajim.c.m.base')
 
@@ -33,9 +34,11 @@ class BaseModule:
     _nbxmpp_extends = ''
     _nbxmpp_methods = []  # type: List[str]
 
-    def __init__(self, con):
+    def __init__(self, con, logger=None):
         self._con = con
         self._account = con.name
+        if logger is not None:
+            self._log = LogAdapter(logger, {'account': self._account})
         self._nbxmpp_callbacks = {}  # type: Dict[str, Any]
         self._stored_publish = None  # type: Callable
         self.handlers = []  # type: List[str]
diff --git a/gajim/common/modules/util.py b/gajim/common/modules/util.py
index 5ff3891aaad3196df0773865e59fa78915fe1bca..7da2e8684ec86a5115780a517e7c6b0ef50b2923 100644
--- a/gajim/common/modules/util.py
+++ b/gajim/common/modules/util.py
@@ -16,6 +16,7 @@
 
 from typing import Union
 
+from logging import LoggerAdapter
 from functools import wraps
 from functools import partial
 
@@ -81,3 +82,8 @@ def get_eme_message(eme_data):
         return EME_MESSAGES[eme_data.namespace]
     except KeyError:
         return EME_MESSAGES['fallback'] % eme_data.name
+
+
+class LogAdapter(LoggerAdapter):
+    def process(self, msg, kwargs):
+        return '[%s] %s' % (self.extra['account'], msg), kwargs