Deoxys Logger
Contents
Deoxys Logger#
Have you struggled with adding print message while debugging and need to delete them one line after another when you finish debugging? Logging is a simple and effective tool to manage different types of messages. In this repo, we support loggign both for python end and C++ end.
Logger for python programs#
Remember to import!
For using all the following functions, make sure you did
from deoxys.utils import log_utils
For the python programs, we have three loggers defined by default: Deoxys
, deoxys_examples
, project
. Deoxys
logger records information from
the controller codebase implementation, deoxys_examples
logger
records information for example scripts we provide, and project
is a
default logger we defined for your own project. All three loggers are
streamed to console by default. To change this default behavior, you
can change the level
in deoxys_default_logger.yml, or you can create your own
configuration file and specify it through the function get_deoxys_logger().
Logger Deoxys
#
Mainly you need to watch out for the warning and error messages from this logger.
Logger deoxys_examples
#
This is mainly for giving people an example of how to do logging in
this codebase. We use this logger in the example scripts to differentiate logging messages from Deoxys
logger.
Logger project
#
We also have a default logger setting for your own project codebase.
If you specify project_name
when calling the get_project_logger
function, a logger with the name of
project_name
will be initialized, and its configuration is the same
as the default project
logger
Logger for C++ programs#
Logging in c++ part of codebase is based on spdlog
. Our implementation of logging in the C++ codebase is minimal. We implemented two sinks, one for console and one for file logging. We use async logger to bypass the read/write blocking of logging. The implementation can be found here.
We specify two different loggers for the arm control process and the gripper control process. All the logging configurations are specified in our example robot config file charmander.yml. You can create your own config under the name of your machine and tune the parameters.
Logger arm_logger
#
The logger arm_logger
logs all the messages we consider important to show for arm control.
The logger arm_logger
streams info
level messages to the console. You can change the level in the config file here.
The logger arm_logger
logs all messages whose levels are above debug
into the file logs. You can change the level in the config file here.
Logger gripper_logger
#
The logger gripper_logger
logs all the messages we consider important to show for gripper control.
The logger gripper_logger
streams info
level messages to the console. You can change the level in the config file here.
The logger gripper_logger
logs all messages whose levels are above debug
into the file logs. You can change the level in the config file here.
Here is a quick overview of logging levels and their corresponding messages in our codebase:
Logger level | Message contents |
---|---|
error | Missing config files, franka exceptions |
warning | No valid controller is specified in the received message |
info (console default) | Initiailization info, gripper information |
debug (file log default) | Control callback information |