Logging with Topology¶
Logging Architecture¶
Topology provides logging capabilities for its own and third party components.
This functionality is implemented in topology.logging
.
Logging Categories¶
The topology components are classified in the following categories:
core
: This category is reserved for the Topology Core components.Audience: Core developers. library
: This category is reserved for any Communication Library plugin logging.Audience: Communication Libraries developers. platform
: This category is reserved for any Platform Engine plugin logging.Audience: Platform Engines developers. user
: This category is reserved for user logging (e.g. test cases).Audience: Test cases and end user developers. node
: This category is reserved for any Node plugin logging (e.g. initialization).Audience: Nodes developers. shell
: This category is reserved for logging anynode.send_command()
call.Audience: Core developers. connection
: This category is reserved for logging anyshell.send_command()
andshell.get_response()
calls.Audience: Core developers. pexpect
: This category is reserved for logging a complete PExpect session.Audience: Core developers. service
: This category is reserved general of services clients.Audience: Nodes developers and third party developers using the ServicesAPI for service clients.
Logging directory¶
All loggers are provided with a logging directory, taken from the value passed with the options:
--topology-log-dir
, if using the pytest plugin.--log-dir
, if using thetopology
executable in interactive mode.topology.logging.manager.logging_directory
property if using programatically.
Logging Levels¶
The default level for these loggers is INFO
, but this level can be set
using:
topology.logging.manager.set_category_level(category, level)
method, to change the level of all loggers in a category.
Logging Context¶
Loggers may also have a defined context, this is useful to provide a unique identifier for objects associated to a particular escenario. The context can or will be set to:
- It will be set to
None
if using thetopology
executable in interactive mode. - It will be set to the name of the Test Suite (the
test_xxx.py
file that holds one or more test cases) if using the pytest plugin. topology.logging.manager.logging_context
property if using programatically.