16 from contextlib
import contextmanager
21 from .console
import ConsoleOutput
22 from .filelogger
import FileLogger
23 from .loggerhelper
import AbstractLogger, AbstractLoggerProxy
24 from .stdoutlogsplitter
import StdoutLogSplitter
37 def __init__(self, register_console_logger=True):
52 if register_console_logger:
56 start_loggers = property
61 return [logger
for logger
in self.
_other_loggers_other_loggers + loggers
if logger]
64 end_loggers = property
69 return [logger
for logger
in loggers + self.
_other_loggers_other_loggers
if logger]
85 markers='AUTO', stdout=None, stderr=None):
86 logger =
ConsoleOutput(type, width, colors, markers, stdout, stderr)
104 path = os.environ.get(
'ROBOT_SYSLOG_FILE',
'NONE')
105 level = os.environ.get(
'ROBOT_SYSLOG_LEVEL', level)
106 if path.upper() ==
'NONE':
110 except DataError
as err:
111 self.
errorerror(
"Opening syslog file '%s' failed: %s" % (path, err.message))
128 for logger
in loggers:
133 for logger
in loggers:
135 if proxy.logger
is not logger]
152 if msg.level ==
'ERROR':
159 cache_only = property
170 delayed_logging = property
180 for msg
in messages
or ():
188 msg.resolve_delayed_message()
192 logger.log_message(msg)
193 if msg.level
in (
'WARN',
'ERROR'):
196 log_message = message
211 logger.start_suite(suite)
215 logger.end_suite(suite)
219 logger.start_test(test)
223 logger.end_test(test)
230 logger.start_keyword(keyword)
235 logger.end_keyword(keyword)
241 logger.imported(import_type, name, attrs)
246 logger.output_file(file_type, path)
258 _methods = (
'start_suite',
'end_suite',
'start_test',
'end_test',
259 'start_keyword',
'end_keyword',
'message',
'log_message',
260 'imported',
'output_file',
'close')
265 _start_keyword_methods = {
267 'ForIteration':
'start_for_iteration',
268 'While':
'start_while',
269 'WhileIteration':
'start_while_iteration',
271 'IfBranch':
'start_if_branch',
273 'TryBranch':
'start_try_branch',
274 'Return':
'start_return',
275 'Continue':
'start_continue',
276 'Break':
'start_break',
281 _end_keyword_methods = {
283 'ForIteration':
'end_for_iteration',
284 'While':
'end_while',
285 'WhileIteration':
'end_while_iteration',
287 'IfBranch':
'end_if_branch',
289 'TryBranch':
'end_try_branch',
290 'Return':
'end_return',
291 'Continue':
'end_continue',
292 'Break':
'end_break',
300 if name
and hasattr(self.
loggerlogger, name):
301 method = getattr(self.
loggerlogger, name)
303 method = self.
loggerlogger.start_keyword
309 if name
and hasattr(self.
loggerlogger, name):
310 method = getattr(self.
loggerlogger, name)
312 method = self.
loggerlogger.end_keyword
dictionary _end_keyword_methods
def start_keyword(self, kw)
def end_keyword(self, kw)
dictionary _start_keyword_methods
A global logger proxy to delegating messages to registered loggers.
def register_syslog(self, path=None, level='INFO')
def end_suite(self, suite)
def __init__(self, register_console_logger=True)
def register_listeners(self, listeners, library_listeners)
def __exit__(self, *exc_info)
def unregister_console_logger(self)
def _relay_cached_messages(self, logger)
def start_keyword(self, keyword)
def enable_library_import_logging(self)
def disable_library_import_logging(self)
def _log_message(self, msg, no_cache=False)
Log messages written (mainly) by libraries.
def register_logger(self, *loggers)
def register_error_listener(self, listener)
def unregister_logger(self, *loggers)
def imported(self, import_type, name, **attrs)
def _wrap_and_relay(self, logger)
def disable_message_cache(self)
def register_console_logger(self, type='verbose', width=78, colors='AUTO', markers='AUTO', stdout=None, stderr=None)
def log_output(self, output)
def output_file(self, file_type, path)
Finished output, report, log, debug, or xunit file.
def end_keyword(self, keyword)
def register_xml_logger(self, logger)
def unregister_xml_logger(self)
def start_test(self, test)
_prev_log_message_handlers
def start_suite(self, suite)
def message(self, msg)
Messages about what the framework is doing, warnings, errors, ...
def __init__(self, level='TRACE')
Splits messages logged through stdout (or stderr) into Message objects.
def ConsoleOutput(type='verbose', width=78, colors='AUTO', markers='AUTO', stdout=None, stderr=None)