https://github.com/robotframework/robotbackgroundlogger
Logger to test libraries that supports logging from threads
https://github.com/robotframework/robotbackgroundlogger
Last synced: 6 months ago
JSON representation
Logger to test libraries that supports logging from threads
- Host: GitHub
- URL: https://github.com/robotframework/robotbackgroundlogger
- Owner: robotframework
- Created: 2014-10-31T12:27:08.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2022-09-05T09:10:27.000Z (over 3 years ago)
- Last Synced: 2025-07-19T17:15:20.561Z (6 months ago)
- Language: Python
- Size: 21.5 KB
- Stars: 13
- Watchers: 12
- Forks: 13
- Open Issues: 8
-
Metadata Files:
- Readme: README.rst
Awesome Lists containing this project
README
.. default-role:: code
Background logging support to test libraries
============================================
This helper module is indented to be used by Robot Framework test libraries
that run keywords in background using threads and that want those threads
to be able to log. By default, as `explained in Robot Framework User Guide`__,
messages logged by threads using the programmatic APIs are ignored, and results
of logging using the standard output are undefined.
This module provides a custom logger that works mostly like the standard
`robot.api.logger`__, but also stores messages logged by background threads.
It also provides a method the main thread can use to forward the logged
messages to Robot Framework's log.
Robot Background Logger is hosted in `Github`__ and downloads can be found
from `PYPI`__. Installation is easiest done with pip::
pip install robotbackgroundlogger
Starting from version 1.2 this module support both Python 2 and Python 3.
__ http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#communication-when-using-threads
__ https://robot-framework.readthedocs.org/en/latest/autodoc/robot.api.html#module-robot.api.logger
__ https://github.com/robotframework/robotbackgroundlogger
__ https://pypi.python.org/pypi/robotbackgroundlogger
Usage
-----
The logger can be taken into use like this:
.. sourcecode:: python
from robotbackgroundlogger import BackgroundLogger
logger = BackgroundLogger()
After that `logger` can be used mostly like `robot.api.logger`:
.. sourcecode:: python
logger.debug('Hello, world!')
logger.info('HTML example', html=True)
When used by the main thread, messages will be logged immediately exactly like
with `robot.api.logger`. When used by other threads, messages will be stored
internally. They can be later logged by the main thread by running:
.. sourcecode:: python
logger.log_background_messages()
If you want to log only messages logged by a certain thread, you can
pass the name of the thread as an argument:
.. sourcecode:: python
logger.log_background_messages('Example thread')
Logged messages are also removed from the internal message storage. It is
possible to do that also without logging:
.. sourcecode:: python
# Remove all messages
logger.reset_background_messages()
# Remove messages logged by the named thread
logger.reset_background_messages('Another thread')
Example
-------
`example.py`__ library that is used by `example.robot`__ shows how this
module can be used in practice. You can run the example like::
robot example.robot
__ https://github.com/robotframework/robotbackgroundlogger/blob/master/example.py
__ https://github.com/robotframework/robotbackgroundlogger/blob/master/example.robot