You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
Logging {#logging} ==================
## Logging frontend
The frontend for logging is defined in [logging.h](@ref logging.h).
It provides the following macros for logging: - LOGMSG_TRACE(channel, msg) - LOGMSG_DEBUG(channel, msg) - LOGMSG_INFO(channel, msg) - LOGMSG_WARN(channel, msg) - LOGMSG_ERROR(channel, msg) - LOGMSG_FATAL(channel, msg) - LOG_FUNC(channel, args) - LOG_FUNC(channel, args, msg) - LOG_ASSERT(channel, condition, msg) - LOG_NOTIMPLEMENTED() - LOG_INEFFICIENT()
Where the arguments mean the following: - `channel`: A string describing the context. For example `"carl.core"`. - `msg`: The actual message as an expression that can be sent to a std::stringstream. For example `"foo: " << foo`. - `args`: A description of the function arguments as an expression like `msg`. - `condition`: A boolean expression that can be passed to `assert()`.
Typically, logging looks like this: @code{.cpp} bool checkStuff(Object o, bool flag) { LOG_FUNC("carl", o << ", " << flag); bool result = o.property(flag); LOGMSG_TRACE("carl", "Result: " << result); return result; } @endcode
Logging is enabled (or disabled) by the `LOGGING` macro in CMake.
## Logging configuration
As of now, there is no frontend interface to configure logging. Hence, configuration is performed directly on the backend.
## Logging backends
As of now, only two logging backends exist.
### CArL logging
CArL provides a custom logging mechanism defined in carl::logging.
### Fallback logging
If logging is enabled, but no real logging backend is selected, all logging of level `WARN` or above goes to `std::cerr`.
|