This is the entry point for all text logging within Drake.
Once you've included this file, the suggested ways you should write log messages include:
drake::log()->trace("Some trace message: {} {}", something, some_other);
Similarly, it provides:
drake::log()->debug(...); drake::log()->info(...); drake::log()->warn(...); drake::log()->error(...); drake::log()->critical(...);
If you want to log objects that are expensive to serialize, these macros will not be compiled if debugging is turned off (-DNDEBUG is set):
DRAKE_LOGGER_TRACE("message: {}", something_conditionally_compiled); DRAKE_LOGGER_DEBUG("message: {}", something_conditionally_compiled);
The format string syntax is fmtlib; see https://fmt.dev/latest/syntax.html. (Note that the documentation link provides syntax for the latest version of fmtlib; the version of fmtlib used by Drake might be older.)
When formatting an Eigen matrix into a string you must wrap the Eigen object with fmt_eigen(); see its documentation for details. This holds true whether it be for logging, error messages, etc.
When logging a third-party type whose only affordance for string output is operator<<
, use fmt_streamed(); see its documentation for details. This is very rare (only a couple uses in Drake so far).
When implementing a string output for a Drake type, eventually this page will demonstrate how to use fmt::formatter<T>. In the meantime, you can implement operator<<
and use drake::ostream_formatter, or else use the macro helper DRAKE_FORMATTER_AS(). Grep around in Drake's existing code to find examples.
Namespaces | |
drake | |
drake::logging | |
Typedefs | |
using | logger = spdlog::logger |
The drake::logging::logger class provides text logging methods. More... | |
Functions | |
logging::logger * | log () |
Retrieve an instance of a logger to use for logging; for example: More... | |
sink * | get_dist_sink () |
(Advanced) Retrieves the default sink for all Drake logs. More... | |
std::string | set_log_level (const std::string &level) |
Sets the log threshold used by Drake's C++ code. More... | |
void | set_log_pattern (const std::string &pattern) |
Invokes drake::log()->set_pattern(pattern) . More... | |
Variables | |
constexpr bool | kHaveSpdlog = true |
True only if spdlog is enabled in this build. More... | |
const char *const | kSetLogLevelUnchanged |
The "unchanged" string to pass to set_log_level() so as to achieve a no-op. More... | |
const char *const | kSetLogLevelHelpMessage |
An end-user help string suitable to describe the effects of set_log_level(). More... | |
const char *const | kSetLogPatternHelpMessage |
An end-user help string suitable to describe the effects of set_log_pattern(). More... | |