diff --git a/lib/extras.py b/lib/extras.py index 36e8ef9aa..fdda95273 100644 --- a/lib/extras.py +++ b/lib/extras.py @@ -29,8 +29,8 @@ import os as _os import time as _time import re as _re +import weakref as _weakref from collections import namedtuple, OrderedDict - import logging as _logging import psycopg2 @@ -401,9 +401,17 @@ def initialize(self, logobj): self._logobj = logobj if _logging and isinstance( logobj, (_logging.Logger, _logging.LoggerAdapter)): - self.log = self._logtologger + self._log = _weakref.WeakMethod(self._logtologger) else: - self.log = self._logtofile + self._log = _weakref.WeakMethod(self._logtofile) + + def log(self, *args, **kwargs): + """ + Public interface of the log method defined in initialize + """ + log = self._log() + if log: + return self._log()(*args, **kwargs) def filter(self, msg, curs): """Filter the query before logging it.