summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--poezio/logger.py33
1 files changed, 17 insertions, 16 deletions
diff --git a/poezio/logger.py b/poezio/logger.py
index 207af0c3..2aa4e175 100644
--- a/poezio/logger.py
+++ b/poezio/logger.py
@@ -10,9 +10,7 @@ conversations and roster changes
"""
import mmap
-import os
import re
-from os import makedirs
from datetime import datetime
from poezio import common
@@ -112,23 +110,23 @@ class Logger(object):
if not config.get_by_tabname('use_log', room):
return
try:
- makedirs(log_dir)
+ log_dir.mkdir(parents=True, exists_ok=True)
except OSError as e:
- if e.errno != 17: # file exists
- log.error('Unable to create the log dir', exc_info=True)
+ log.error('Unable to create the log dir', exc_info=True)
except:
log.error('Unable to create the log dir', exc_info=True)
return
if not open_fd:
return
+ filename = log_dir / room
try:
- fd = open(os.path.join(log_dir, room), 'a', encoding='utf-8')
+ fd = open(filename, 'a', encoding='utf-8')
self._fds[room] = fd
return fd
except IOError:
log.error(
'Unable to open the log file (%s)',
- os.path.join(log_dir, room),
+ filename,
exc_info=True)
def get_logs(self, jid, nb=10):
@@ -149,18 +147,19 @@ class Logger(object):
self._check_and_create_log_dir(jid, open_fd=False)
+ filename = log_dir / jid
try:
- fd = open(os.path.join(log_dir, jid), 'rb')
+ fd = open(filename, 'rb')
except FileNotFoundError:
log.info(
'Non-existing log file (%s)',
- os.path.join(log_dir, jid),
+ filename,
exc_info=True)
return
except OSError:
log.error(
'Unable to open the log file (%s)',
- os.path.join(log_dir, jid),
+ filename,
exc_info=True)
return
if not fd:
@@ -175,7 +174,7 @@ class Logger(object):
except Exception: # file probably empty
log.error(
'Unable to mmap the log file for (%s)',
- os.path.join(log_dir, jid),
+ filename,
exc_info=True)
return
return parse_log_lines(lines)
@@ -199,12 +198,13 @@ class Logger(object):
fd = self._check_and_create_log_dir(jid)
if not fd:
return True
+ filename = log_dir / jid
try:
fd.write(logged_msg)
except OSError:
log.error(
'Unable to write in the log file (%s)',
- os.path.join(log_dir, jid),
+ filename,
exc_info=True)
return False
else:
@@ -213,7 +213,7 @@ class Logger(object):
except OSError:
log.error(
'Unable to flush the log file (%s)',
- os.path.join(log_dir, jid),
+ filename,
exc_info=True)
return False
return True
@@ -225,14 +225,15 @@ class Logger(object):
if not config.get_by_tabname('use_log', jid):
return True
self._check_and_create_log_dir('', open_fd=False)
+ filename = log_dir / 'roster.log'
if not self._roster_logfile:
try:
self._roster_logfile = open(
- os.path.join(log_dir, 'roster.log'), 'a', encoding='utf-8')
+ filename, 'a', encoding='utf-8')
except IOError:
log.error(
'Unable to create the log file (%s)',
- os.path.join(log_dir, 'roster.log'),
+ filename,
exc_info=True)
return False
try:
@@ -249,7 +250,7 @@ class Logger(object):
except:
log.error(
'Unable to write in the log file (%s)',
- os.path.join(log_dir, 'roster.log'),
+ filename,
exc_info=True)
return False
return True