diff options
author | Liutauras Adomaitis <adomaitis@kolabsys.com> | 2018-03-15 16:17:38 +0200 |
---|---|---|
committer | Liutauras Adomaitis <adomaitis@kolabsys.com> | 2018-05-17 09:56:05 +0300 |
commit | 10f1c173941d0a8df227822ca4b497398eb73760 (patch) | |
tree | 9a10c7d3fca5ffc5bf7bbfc383d01f9ac36cdaab /pykolab/imap/cyrus.py | |
parent | ae2ba60049a4e5c4e4ea427dfb59a63547a683ea (diff) | |
download | pykolab-10f1c173941d0a8df227822ca4b497398eb73760.tar.gz |
With this patch I'm trying to introduce a file-type object in logger, which could swallow everything thrown to stderr (and possibly stdout) and redirect to python logger. Python smtplib debug mode prints everything to stderr, but when wallace runs...
Summary: ...in fork mode stderr is not available (Bad file descriptor error) and thus wallace traceback when it tries to send emails
Test Plan: none
Reviewers: vanmeeuwen, machniak, petersen
Reviewed By: vanmeeuwen
Subscribers: petersen, machniak, vanmeeuwen
Maniphest Tasks: T2498, T2163, T3751
Differential Revision: https://git.kolab.org/D577
Diffstat (limited to 'pykolab/imap/cyrus.py')
-rw-r--r-- | pykolab/imap/cyrus.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/pykolab/imap/cyrus.py b/pykolab/imap/cyrus.py index 27f889b..9907c44 100644 --- a/pykolab/imap/cyrus.py +++ b/pykolab/imap/cyrus.py @@ -90,6 +90,11 @@ class Cyrus(cyruslib.CYRUS): if conf.debuglevel > 8: self.VERBOSE = True self.m.debug = 5 + sl = pykolab.logger.StderrToLogger(log) + # imaplib debug outputs everything to stderr. Redirect to Logger + sys.stderr = sl + # cyruslib debug outputs everything to LOGFD. Redirect to Logger + self.LOGFD = sl # Initialize our variables self.separator = self.SEP @@ -139,7 +144,13 @@ class Cyrus(cyruslib.CYRUS): Login to the Cyrus IMAP server through cyruslib.CYRUS, but set our hierarchy separator. """ - cyruslib.CYRUS.login(self, *args, **kw) + try: + cyruslib.CYRUS.login(self, *args, **kw) + except cyruslib.CYRUSError, errmsg: + log.error("Login to Cyrus IMAP server failed: %r", errmsg) + except Exception, errmsg: + log.exception(errmsg) + self.separator = self.SEP try: self._id() |