ILogging#
Fully qualified name: carb::logging::ILogging
Defined in carb/logging/ILogging.h
-
struct ILogging#
Defines the log system that is associated with the Framework.
This interface defines the log system, which is a singleton object. It can be used at any moment, including before the startup of the Framework and after the Framework was shutdown. It allows a user to setup the logging behavior in advance and allows the Framework to log during its initialization.
Logger - is an interface for logging backend. ILogging can contain multiple Loggers and every message will be passed to every logger. There is one implementation of a Logger provided - StandardLogger. It can log into file, console and debug window. ILogging starts up with one instance of StandardLogger2, which can be retrieved by calling getDefaultLogger(). It is added by default, but can be removed with
getLogging()->removeLogger(getLogging()->getDefaultLogger()->getLogger())
.ILogging supports multiple sources of log messages. Source is just a name to differentiate the origins of a message. Every plugin, application and Framework itself are different sources. However user can add more custom sources if needed.
Use the logging macros from Log.h for all logging in applications and plugins.
There are 2 log settings: log level (to control log severity threshold) and log enabled (to toggle whole logging). Both of them can be set globally and per source.
Public Functions
-
inline ObjectPtr<StandardLogger2> createStandardLogger()#
Creates a new StandardLogger2 instance.
Use this method to create additional StandardLogger2 instances. This can be useful when you want to log to multiple output destinations but want different configuration for each. Pass the value from StandardLogger2::getLogger() to addLogger() to make it active. When finished with the StandardLogger2 call StandardLogger2::release().
- Returns:
A new StandardLogger2.
Public Members
-
void (*log)(const char *source, int32_t level, const char *fileName, const char *functionName, int lineNumber, const char *fmt, ...)#
Logs a formatted message to the specified log source and log level.
This API is used primarily by the CARB_LOG_XXXX macros.
- Param source:
The log source to log the message to.
- Param level:
The level to log the message at.
- Param fileName:
The file name to log to.
- Param functionName:
The name of the function where the message originated from.
- Param lineNumber:
The line number
- Param fmt:
The print formatted message.
- Param …:
The variable arguments for the formatted message variables.
-
void (*setLevelThreshold)(int32_t level)#
Sets global log level threshold.
Messages below this threshold will be dropped.
- Param level:
The log level to set.
-
int32_t (*getLevelThreshold)()#
Gets global log level threshold.
Messages below this threshold will be dropped.
- Return:
Global log level.
-
void (*setLogEnabled)(bool enabled)#
Sets global log enabled setting.
- Param enabled:
Global log enabled setting.
-
bool (*isLogEnabled)()#
If global log is enabled.
- Return:
Global log enabled.
-
void (*setLevelThresholdForSource)(const char *source, LogSettingBehavior behavior, int32_t level)#
Sets log level threshold for the specified source.
Messages below this threshold will be dropped. Per source log settings can either inherit global or override it, it is configured with LogSettingBehavior::eInherit and LogSettingBehavior::eOverride accordingly.
- Param source:
The source to set log level setting for. Must not be nullptr.
- Param behavior:
The log setting behavior for the source.
- Param level:
The log level to set. This param is ignored if behavior is set to LogSettingBehavior::eInherit.
-
void (*setLogEnabledForSource)(const char *source, LogSettingBehavior behavior, bool enabled)#
Sets log enabled setting for the specified source.
Per source log settings can either inherit global or override it, it is configured with LogSettingBehavior::eInherit and LogSettingBehavior::eOverride accordingly.
- Param source:
The source to set log enabled setting for. Must not be nullptr.
- Param behavior:
The log setting behavior for the source.
- Param enabled:
The log enabled setting. This param is ignored if behavior is set to LogSettingBehavior::eInherit.
-
void (*reset)()#
Reset all log settings set both globally and per source.
Log system resets to the defaults: log is enabled and log level is ‘warn’.
-
void (*addLogger)(Logger *logger)#
Adds a logger to the ILogging.
See also
- Param logger:
The logger to be added.
-
void (*removeLogger)(Logger *logger)#
Removes the logger from the ILogging.
See also
- Param logger:
The logger to be removed.
-
StandardLogger *(*getDefaultLoggerOld)()#
Accesses the default logger.
This logger can be disabled by passing it to removeLogger(). This logger is owned by the logging system and cannot be destroyed by passing it to destroyStandardLoggerOld().
Deprecated since version 156.0.
Use getDefaultLogger() instead
- Return:
the default logger.
-
StandardLogger *(*createStandardLoggerOld)()#
Creates a new StandardLogger instance.
Use this method to create additional StandardLogger instances. This can be useful when you want to log to multiple output destinations but want different configuration for each. Use addLogger() to make it active. When finished with the StandardLogger pass it to destroyStandardLoggerOld().
Deprecated since version 156.0.
Use createStandardLogger() instead
- Return:
A new StandardLogger.
-
void (*destroyStandardLoggerOld)(StandardLogger *logger)#
Use this method to destroy a StandardLogger that was created via createStandardLoggerOld().
Deprecated since version 156.0.
The
StandardLogger2
that replacesStandardLogger
can be destroyed by callingrelease()
.
- Param logger:
The logger to be destroyed.
-
void (*registerSource)(const char *source, SetLogLevelFn setLevelThreshold)#
Register new logging source.
This function is mainly automatically used by plugins, application and the Framework itself to create their own logging sources.
Custom logging source can also be created if needed. It is the user’s responsibility to call ILogging::unregisterSource in that case.
It is the source responsibility to track its log level. The reason is that it allows to filter out logging before calling into the logging system, thus making the performance cost for the disabled logging negligible. It is done by providing a callback
setLevelThreshold
to be called by ILogging when any setting which influences this source is changed.- Param source:
The source name. Must not be nullptr.
- Param setLevelThreshold:
The callback to be called to update log level. ILogging::unregisterSource must be called when the callback is no longer valid.
-
void (*unregisterSource)(const char *source)#
Unregister logging source.
- Param source:
The source name. Must not be nullptr.
-
bool (*setLogAsync)(bool logAsync)#
Instructs the logging system to deliver all log messages to the Logger backends asynchronously.
Async logging is OFF by default.
This causes log() calls to be buffered so that log() may return as quickly as possible. A background thread then issues these buffered log messages to the registered Logger backend objects.
- Param logAsync:
True to use async logging; false to disable async logging.
- Return:
true if was previously using async logging; false if was previously using synchronous logging.
-
bool (*getLogAsync)()#
Returns whether the ILogging system is using async logging.
- Return:
true if currently using async logging; false if currently using synchronous logging
-
void (*flushLogs)()#
When ILogging is in async mode, wait until all log messages have flushed out to the various loggers.
-
StandardLogger2 *(*getStandardLogger2)(StandardLogger *logger)#
Retrieves the extended StandardLogger2 interface from an old StandardLogger instance.
- Param logger:
The logger to retrieve the instance from. If
nullptr
thennullptr
will be returned.- Return:
The StandardLogger2 interface for
logger
, ornullptr
.
-
StandardLogger2 *(*getDefaultLogger)()#
Accesses the default logger.
This logger can be disabled by passing the underlying logger (from StandardLogger2::getLogger()) to removeLogger(). This logger is owned by the logging system and calling StandardLogger2::release() has no effect.
- Return:
the default StandardLogger2.
Public Static Functions
- static inline constexpr carb::InterfaceDesc getInterfaceDesc(
Returns information about this interface.
Auto-generated by CARB_PLUGIN_INTERFACE() or CARB_PLUGIN_INTERFACE_EX.
- Returns:
The carb::InterfaceDesc struct with information about this interface.
- static inline constexpr carb::InterfaceDesc getLatestInterfaceDesc(
Returns information about the latest version of this interface.
Auto-generated by CARB_PLUGIN_INTERFACE() or CARB_PLUGIN_INTERFACE_EX.
- Returns:
The carb::InterfaceDesc struct with information about the latest version of this interface.
-
inline ObjectPtr<StandardLogger2> createStandardLogger()#