Skip to content

Commit 0500d14

Browse files
authored
Merge pull request #6 from NVoronchev/master
Fix and improvement of logging
2 parents cba9546 + 79c5795 commit 0500d14

File tree

2 files changed

+27
-10
lines changed

2 files changed

+27
-10
lines changed

pytest_reportportal/__init__.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,21 @@
11
import logging
2+
23
from .service import PyTestService
34

45

56
class RPlogHandler(logging.Handler):
7+
8+
# Map loglevel codes from `logging` module to ReportPortal text names:
9+
_loglevel_map = {
10+
logging.NOTSET: "TRACE",
11+
logging.DEBUG: "DEBUG",
12+
logging.INFO: "INFO",
13+
logging.WARNING: "WARN",
14+
logging.ERROR: "ERROR",
15+
logging.CRITICAL: "ERROR",
16+
}
17+
_sorted_levelnos = sorted(_loglevel_map.keys(), reverse=True)
18+
619
def __init__(self, level=logging.NOTSET):
720
super(RPlogHandler, self).__init__(level)
821

@@ -14,4 +27,8 @@ def emit(self, record):
1427
except:
1528
self.handleError(record)
1629

17-
return PyTestService.post_log(msg, log_level=self.level)
30+
for level in self._sorted_levelnos:
31+
if level <= record.levelno:
32+
break
33+
34+
return PyTestService.post_log(msg, loglevel=self._loglevel_map[level])

pytest_reportportal/service.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,12 @@ def __call__(cls, *args, **kwargs):
2222

2323
class PyTestServiceClass(with_metaclass(Singleton, object)):
2424

25-
def __init__(self):
25+
_loglevels = ('TRACE', 'DEBUG', 'INFO', 'WARN', 'ERROR')
2626

27+
def __init__(self):
2728
self.RP = None
2829
self.TEST_ITEM_STACK = []
2930
self.launch_id = None
30-
self.loglevel_map = {
31-
0: "TRACE",
32-
10: "DEBUG",
33-
20: "INFO",
34-
30: "WARNING",
35-
40: "ERROR"}
3631

3732
def init_service(self, endpoint, project, uuid):
3833

@@ -140,10 +135,15 @@ def _get_top_id_from_stack(self):
140135
except IndexError:
141136
return None
142137

143-
def post_log(self, message, log_level="INFO"):
138+
def post_log(self, message, loglevel='INFO'):
139+
if loglevel not in self._loglevels:
140+
logging.warning('Incorrect loglevel = {}. Force set to INFO. Avaliable levels: '
141+
'{}.'.format(loglevel, self._loglevels))
142+
loglevel = 'INFO'
143+
144144
sl_rq = SaveLogRQ(item_id=self._get_top_id_from_stack(),
145145
time=timestamp(), message=message,
146-
level=self.loglevel_map[log_level])
146+
level=loglevel)
147147
self.RP.log(sl_rq)
148148

149149

0 commit comments

Comments
 (0)