Skip to content

Commit 79c5795

Browse files
Nikita VoronchevNikita Voronchev
authored andcommitted
Move loglevel_map to logger handler. post_log now takes log levels as string in Report Portal Notation.
1 parent 4458115 commit 79c5795

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
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=record.levelno)
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 & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,13 @@ 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
3031

31-
# Map loglevel codes from `logging` module to ReportPortal text names:
32-
self.loglevel_map = {
33-
logging.NOTSET: "TRACE",
34-
logging.DEBUG: "DEBUG",
35-
logging.INFO: "INFO",
36-
logging.WARNING: "WARN",
37-
logging.ERROR: "ERROR",
38-
logging.CRITICAL: "ERROR",
39-
}
40-
4132
def init_service(self, endpoint, project, uuid):
4233

4334
if self.RP is None:
@@ -144,10 +135,15 @@ def _get_top_id_from_stack(self):
144135
except IndexError:
145136
return None
146137

147-
def post_log(self, message, log_level=logging.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+
148144
sl_rq = SaveLogRQ(item_id=self._get_top_id_from_stack(),
149145
time=timestamp(), message=message,
150-
level=self.loglevel_map[log_level])
146+
level=loglevel)
151147
self.RP.log(sl_rq)
152148

153149

0 commit comments

Comments
 (0)