RTI Connext C API Version 7.4.0
|
Configure how much debugging information is reported during runtime and where it is logged. More...
Modules | |
Activity Context | |
Add contextual information to log messages. | |
Data Structures | |
struct | NDDS_Config_Logger |
<<interface>> The singleton type used to configure RTI Connext logging. More... | |
struct | NDDS_Config_LogMessage |
Log message. More... | |
struct | NDDS_Config_LoggerDevice |
<<interface>> Logging device interface. Use for user-defined logging devices. More... | |
Macros | |
#define | NDDS_Config_LoggerDevice_INITIALIZER |
Initializer for new Logger Device instances. More... | |
Typedefs | |
typedef void(* | NDDS_Config_LoggerDeviceWriteFnc) (struct NDDS_Config_LoggerDevice *device, const struct NDDS_Config_LogMessage *message) |
Prototype of a NDDS_Config_LoggerDevice write function. More... | |
typedef void(* | NDDS_Config_LoggerDeviceCloseFnc) (struct NDDS_Config_LoggerDevice *device) |
Prototype of a NDDS_Config_LoggerDevice close function. More... | |
Configure how much debugging information is reported during runtime and where it is logged.
#define NDDS_Config_LoggerDevice_INITIALIZER |
Initializer for new Logger Device instances.
typedef void(* NDDS_Config_LoggerDeviceWriteFnc) (struct NDDS_Config_LoggerDevice *device, const struct NDDS_Config_LogMessage *message) |
Prototype of a NDDS_Config_LoggerDevice write function.
Write a log message to the input device.
Note: It is not safe to make any calls to the RTI Connext core library, including calls to DDS_DomainParticipant_get_current_time, from any of the logging device operations.
typedef void(* NDDS_Config_LoggerDeviceCloseFnc) (struct NDDS_Config_LoggerDevice *device) |
Prototype of a NDDS_Config_LoggerDevice close function.
Close the input device.
Note: It is not safe to make any calls to the RTI Connext core library, including calls to DDS_DomainParticipant_get_current_time, from any of the logging device operations.
device | <<in>> Logging device. |
The verbosities at which RTI Connext diagnostic information is logged.
enum NDDS_Config_LogLevel |
Level category assigned to RTI Connext log messages returned to an output device.
Syslog level category assigned to RTI Connext log messages. See Syslog Level and Verbosity Mapping, in the Core Libraries User's Manual, for more information.
Enumerator | |
---|---|
NDDS_CONFIG_SYSLOG_LEVEL_EMERGENCY | System is unusable. Maps to NDDS_CONFIG_LOG_LEVEL_FATAL_ERROR. |
NDDS_CONFIG_SYSLOG_LEVEL_ALERT | Should be corrected immediately. Maps to NDDS_CONFIG_LOG_LEVEL_ERROR. |
NDDS_CONFIG_SYSLOG_LEVEL_CRITICAL | Critical conditions. Maps to NDDS_CONFIG_LOG_LEVEL_ERROR. |
NDDS_CONFIG_SYSLOG_LEVEL_ERROR | Error conditions. Maps to NDDS_CONFIG_LOG_LEVEL_ERROR. |
NDDS_CONFIG_SYSLOG_LEVEL_WARNING | May indicate that an error will occur if action is not taken. Maps to NDDS_CONFIG_LOG_LEVEL_WARNING. |
NDDS_CONFIG_SYSLOG_LEVEL_NOTICE | Events that are unusual, but not error conditions. Maps to NDDS_CONFIG_LOG_LEVEL_STATUS_LOCAL. |
NDDS_CONFIG_SYSLOG_LEVEL_INFORMATIONAL | Normal operational messages that require no action. Maps to NDDS_CONFIG_LOG_LEVEL_STATUS_LOCAL. |
NDDS_CONFIG_SYSLOG_LEVEL_DEBUG | Information useful to developers for debugging the application. Maps to NDDS_CONFIG_LOG_LEVEL_DEBUG. |
Categories of logged messages.
The NDDS_Config_Logger_get_verbosity_by_category and NDDS_Config_Logger_set_verbosity_by_category can be used to specify different verbosities for different categories of messages.
Enumerator | |
---|---|
NDDS_CONFIG_LOG_CATEGORY_PLATFORM | Log messages pertaining to the underlying platform (hardware and OS) on which RTI Connext is running are in this category. |
NDDS_CONFIG_LOG_CATEGORY_COMMUNICATION | Log messages pertaining to data serialization and deserialization and network traffic are in this category. |
NDDS_CONFIG_LOG_CATEGORY_DATABASE | Log messages pertaining to the internal database in which RTI Connext objects are stored are in this category. |
NDDS_CONFIG_LOG_CATEGORY_ENTITIES | Log messages pertaining to local and remote entities, and to a subset of the discovery process, are in this category. (To see all discovery-related messages, use the DISCOVERY category.) |
NDDS_CONFIG_LOG_CATEGORY_API | Log messages pertaining to the API layer of RTI Connext (such as function argument validation) are in this category. |
NDDS_CONFIG_LOG_CATEGORY_DISCOVERY | Log messages pertaining to discovery are in this category. |
NDDS_CONFIG_LOG_CATEGORY_SECURITY | Log messages pertaining to security are in this category. These messages include any messages logged by RTI Connext components even if they are not related to the Security Plugins. |
NDDS_CONFIG_LOG_CATEGORY_USER | Log messages that are generated by the user using the following log APIs: NDDS_Config_Logger_emergency, NDDS_Config_Logger_alert, NDDS_Config_Logger_critical, NDDS_Config_Logger_error, NDDS_Config_Logger_warning, NDDS_Config_Logger_notice, NDDS_Config_Logger_informational, NDDS_Config_Logger_debug. |
NDDS_CONFIG_LOG_CATEGORY_ALL | Log messages pertaining to all categories in RTI Connext. |
The format used to output RTI Connext diagnostic information.
Enumerator | |
---|---|
NDDS_CONFIG_LOG_PRINT_FORMAT_DEFAULT | (default) Print message, method name, log level, Activity Context (what was happening when the event occurred), and logging category. |
NDDS_CONFIG_LOG_PRINT_FORMAT_TIMESTAMPED | Print message, method name, log level, Activity Context, logging category, and timestamp. |
NDDS_CONFIG_LOG_PRINT_FORMAT_VERBOSE | Print message with all available context information (includes thread identifier, message location). |
NDDS_CONFIG_LOG_PRINT_FORMAT_VERBOSE_TIMESTAMPED | Print message with all available context information, and timestamp. |
NDDS_CONFIG_LOG_PRINT_FORMAT_DEBUG | Print a set of fields (including message number and backtrace information) that may be useful for internal debugging. |
NDDS_CONFIG_LOG_PRINT_FORMAT_MINIMAL | Print only message number and message location. |
NDDS_CONFIG_LOG_PRINT_FORMAT_MAXIMAL | Print all available fields. |
A number that identifies the source of a log message.
In the Syslog Protocol, the Facility is a numerical code that represents the machine process that created a Syslog event. RTI Connext uses the facility to represent the source of a given log message.
Enumerator | |
---|---|
NDDS_CONFIG_LOG_FACILITY_USER | A log message produced by the APIs that log user messages in NDDS_Config_Logger (e.g, NDDS_Config_Logger_emergency). Numerical code: 1 |
NDDS_CONFIG_LOG_FACILITY_SECURITY_EVENT | A security-related message logged by the RTI Security Plugins Logging Plugin. Numerical code: 10 |
NDDS_CONFIG_LOG_FACILITY_SERVICE | A log message produced by an Infrastructure Service, such as Routing Service. Infrastructure Services operate using the Core Libraries. The messages that the Core Libraries create are categorized under the MIDDLEWARE facility. Log messages that are directly generated by the Infrastructure Service itself are marked with the SERVICE facility. Numerical code: 22 |
NDDS_CONFIG_LOG_FACILITY_MIDDLEWARE | A log message produced by RTI Connext Core Libraries. Numerical code: 23 |
The Syslog verbosities at which RTI Connext diagnostic information is logged. These Syslog verbosities are mapped to NDDS_Config_LogVerbosity. See Syslog Level and Verbosity Mapping, in the Core Libraries User's Manual, for more information.
Enumerator | |
---|---|
NDDS_CONFIG_SYSLOG_VERBOSITY_SILENT | No messages will be logged. (lowest verbosity) Equivalent to NDDS_CONFIG_LOG_VERBOSITY_SILENT. |
NDDS_CONFIG_SYSLOG_VERBOSITY_EMERGENCY | Emergency, critical, alert, and error messages will be logged. This Syslog verbosity level is translated to NDDS_CONFIG_LOG_VERBOSITY_ERROR when interpreted by RTI Connext. (That's why this level actually logs more than just emergency messages.) |
NDDS_CONFIG_SYSLOG_VERBOSITY_ALERT | Emergency, critical, and alert messages will be logged. This Syslog verbosity level is translated to NDDS_CONFIG_LOG_VERBOSITY_ERROR when interpreted by RTI Connext. (That's why this level actually logs more than just emergency, critical and alert messages.) |
NDDS_CONFIG_SYSLOG_VERBOSITY_CRITICAL | Emergency, critical, alert, and error messages will be logged. This Syslog verbosity level is translated to NDDS_CONFIG_LOG_VERBOSITY_ERROR when interpreted by RTI Connext. (That's why this level actually logs more than just emergency and critical messages.) |
NDDS_CONFIG_SYSLOG_VERBOSITY_ERROR | Emergency, critical, alert, and error messages will be logged. This Syslog verbosity level is translated to NDDS_CONFIG_LOG_VERBOSITY_ERROR when interpreted by RTI Connext. |
NDDS_CONFIG_SYSLOG_VERBOSITY_WARNING | Emergency, critical, alert, error, and warning messages will be logged. This Syslog verbosity level is translated to NDDS_CONFIG_LOG_VERBOSITY_WARNING when interpreted by RTI Connext. |
NDDS_CONFIG_SYSLOG_VERBOSITY_NOTICE | Emergency, critical, alert, error, warning, notice and informational messages will be logged. This Syslog verbosity level is translated to NDDS_CONFIG_LOG_VERBOSITY_STATUS_REMOTE when interpreted by RTI Connext. (That's why this level actually logs more than just emergency, critical, alert, error, warning and notice messages.) |
NDDS_CONFIG_SYSLOG_VERBOSITY_INFORMATIONAL | Emergency, critical, alert, error, warning, notice, and informational messages will be logged. This Syslog verbosity level is translated to NDDS_CONFIG_LOG_VERBOSITY_STATUS_REMOTE when interpreted by RTI Connext. |
NDDS_CONFIG_SYSLOG_VERBOSITY_DEBUG | All messages will be logged. This Syslog verbosity level is translated to NDDS_CONFIG_LOG_VERBOSITY_STATUS_ALL when interpreted by RTI Connext. |
NDDS_Config_Logger * NDDS_Config_Logger_get_instance | ( | void | ) |
Get the singleton instance of this type.
NDDS_Config_Logger * NDDS_Config_Logger_get_instanceI | ( | void | ) |
Get the singleton instance of this type.
NDDS_Config_LogVerbosity NDDS_Config_Logger_get_verbosity | ( | const NDDS_Config_Logger * | self | ) |
Get the verbosity at which RTI Connext is currently logging diagnostic information.
The default verbosity if NDDS_Config_Logger_set_verbosity is never called is NDDS_CONFIG_LOG_VERBOSITY_ERROR.
If NDDS_Config_Logger_set_verbosity_by_category has been used to set different verbosities for different categories of messages, this function will return the maximum verbosity of all categories.
NDDS_Config_LogVerbosity NDDS_Config_Logger_get_verbosity_by_category | ( | const NDDS_Config_Logger * | self, |
NDDS_Config_LogCategory | category | ||
) |
Get the verbosity at which RTI Connext is currently logging diagnostic information in the given category.
The default verbosity if NDDS_Config_Logger_set_verbosity and NDDS_Config_Logger_set_verbosity_by_category are never called is NDDS_CONFIG_LOG_VERBOSITY_ERROR.
void NDDS_Config_Logger_set_verbosity | ( | NDDS_Config_Logger * | self, |
NDDS_Config_LogVerbosity | verbosity | ||
) |
Set the verbosity at which RTI Connext will log diagnostic information.
Note: Logging at high verbosities will be detrimental to your application's performance. Your default setting should typically remain at NDDS_CONFIG_LOG_VERBOSITY_WARNING or below. (The default verbosity if you never set it is NDDS_CONFIG_LOG_VERBOSITY_ERROR.)
void NDDS_Config_Logger_set_verbosity_by_category | ( | NDDS_Config_Logger * | self, |
NDDS_Config_LogCategory | category, | ||
NDDS_Config_LogVerbosity | verbosity | ||
) |
Set the verbosity at which RTI Connext will log diagnostic information in the given category.
FILE * NDDS_Config_Logger_get_output_file | ( | NDDS_Config_Logger * | self | ) |
Get the file to which the logged output is redirected.
If no output file has been registered through NDDS_Config_Logger_set_output_file, this function will return NULL. In this case, logged output will on most platforms go to standard out as if through printf.
DDS_Boolean NDDS_Config_Logger_set_output_file | ( | NDDS_Config_Logger * | self, |
FILE * | out | ||
) |
Set the file to which the logged output is redirected.
The file passed may be NULL, in which case further logged output will be redirected to the platform-specific default output location (standard out on most platforms).
For better performance when log messages are generated frequently, the log messages are not flushed into a file immediately after they are generated. In other words, while writing a log message, RTI Connext only calls the function fwrite() (see https://pubs.opengroup.org/onlinepubs/009695399/functions/fwrite.html); it does not call the function fflush() (see https://pubs.opengroup.org/onlinepubs/009695399/functions/fflush.html). If your application requires a different flushing behavior, you may use NDDS_Config_Logger_set_output_device to configure a custom logging device.
DDS_Boolean NDDS_Config_Logger_set_output_file_name | ( | NDDS_Config_Logger * | self, |
const char * | file_name | ||
) |
Set the name of the file to which the logged output is redirected.
The name may be NULL, in which case further logged output will be redirected to the platform-specific default output location (standard out on most platforms).
See NDDS_Config_Logger_set_output_file for the flushing behavior.
DDS_Boolean NDDS_Config_Logger_set_output_file_set | ( | NDDS_Config_Logger * | self, |
const char * | file_preffix, | ||
const char * | file_suffix, | ||
int | max_capacity, | ||
int | max_files | ||
) |
Configure a set of files to redirect the logged output.
The logged output will be redirected to a set of files whose names are configured with a prefix and a suffix. The maximum number of bytes configures how many bytes to write into a file before opening the next file. After reaching the maximum number of files, the first one is overwritten.
For example, if the prefix is 'Foo', the suffix is '.txt', the max number of bytes is 1GB, and the max number of files is 3, the logger will create (at most) these files: Foo1.txt, Foo2.txt, and Foo3.txt. It will write to Foo1.txt, and after writing 1GB, it will move on to Foo2.txt, then to Foo3.txt, then to Foo1.txt again, and so on.
To stop logging to these files and redirect the output to the platform-specific location, pass NULL, NULL, 0, 0.
See NDDS_Config_Logger_set_output_file for the flushing behavior.
NDDS_Config_LogPrintFormat NDDS_Config_Logger_get_print_format | ( | const NDDS_Config_Logger * | self | ) |
Get the current message format for the log level NDDS_CONFIG_LOG_LEVEL_ERROR.
Use NDDS_Config_Logger_get_print_format_by_log_level to retrieve the format for other log levels.
If NDDS_Config_Logger_set_print_format is never called, the default format is NDDS_CONFIG_LOG_PRINT_FORMAT_DEFAULT.
NDDS_Config_LogPrintFormat NDDS_Config_Logger_get_print_format_by_log_level | ( | const NDDS_Config_Logger * | self, |
NDDS_Config_LogLevel | log_level | ||
) |
Get the current message format, by log level, that RTI Connext is using to log diagnostic information.
If NDDS_Config_Logger_set_print_format is never called, the default format is NDDS_CONFIG_LOG_PRINT_FORMAT_DEFAULT.
DDS_Boolean NDDS_Config_Logger_set_print_format | ( | NDDS_Config_Logger * | self, |
NDDS_Config_LogPrintFormat | print_format | ||
) |
Set the message format that RTI Connext will use to log diagnostic information for all the log levels, except for NDDS_CONFIG_LOG_LEVEL_FATAL_ERROR. When the Activity Context is printed, the user can select the information that will be part of the Activity Context by using the API NDDS_Config_ActivityContext_set_attribute_mask.
Set print mask for all the log levels, except for (RTI_LOG_LEVEL_FATAL_ERROR).
DDS_Boolean NDDS_Config_Logger_set_print_format_by_log_level | ( | NDDS_Config_Logger * | self, |
NDDS_Config_LogPrintFormat | print_format, | ||
NDDS_Config_LogLevel | log_level | ||
) |
Set the message format that RTI Connext will use to log diagnostic information for all the log levels, except for NDDS_CONFIG_LOG_LEVEL_FATAL_ERROR. When the Activity Context is printed, the user can select the information that will be part of the Activity Context by using the API NDDS_Config_ActivityContext_set_attribute_mask.
void NDDS_Config_Logger_emergency | ( | NDDS_Config_Logger * | self, |
const char * | msg | ||
) |
Logs message with NDDS_CONFIG_SYSLOG_LEVEL_EMERGENCY and NDDS_CONFIG_LOG_CATEGORY_USER. Note: DDS_DomainParticipantFactory_finalize_instance needs to be called to finalize the Logger singleton. .
void NDDS_Config_Logger_alert | ( | NDDS_Config_Logger * | self, |
const char * | msg | ||
) |
Logs message with NDDS_CONFIG_SYSLOG_LEVEL_ALERT and NDDS_CONFIG_LOG_CATEGORY_USER. Note: DDS_DomainParticipantFactory_finalize_instance needs to be called to finalize the Logger singleton. .
void NDDS_Config_Logger_critical | ( | NDDS_Config_Logger * | self, |
const char * | msg | ||
) |
Logs message with NDDS_CONFIG_SYSLOG_LEVEL_CRITICAL and NDDS_CONFIG_LOG_CATEGORY_USER. Note: DDS_DomainParticipantFactory_finalize_instance needs to be called to finalize the Logger singleton. .
void NDDS_Config_Logger_error | ( | NDDS_Config_Logger * | self, |
const char * | msg | ||
) |
Logs message with NDDS_CONFIG_SYSLOG_LEVEL_ERROR and NDDS_CONFIG_LOG_CATEGORY_USER. Note: DDS_DomainParticipantFactory_finalize_instance needs to be called to finalize the Logger singleton. .
void NDDS_Config_Logger_warning | ( | NDDS_Config_Logger * | self, |
const char * | msg | ||
) |
Logs message with NDDS_CONFIG_SYSLOG_LEVEL_WARNING and NDDS_CONFIG_LOG_CATEGORY_USER. Note: DDS_DomainParticipantFactory_finalize_instance needs to be called to finalize the Logger singleton. .
void NDDS_Config_Logger_notice | ( | NDDS_Config_Logger * | self, |
const char * | msg | ||
) |
Logs message with NDDS_CONFIG_SYSLOG_LEVEL_NOTICE and NDDS_CONFIG_LOG_CATEGORY_USER. Note: DDS_DomainParticipantFactory_finalize_instance needs to be called to finalize the Logger singleton. .
void NDDS_Config_Logger_informational | ( | NDDS_Config_Logger * | self, |
const char * | msg | ||
) |
Logs message with NDDS_CONFIG_SYSLOG_LEVEL_INFORMATIONAL and NDDS_CONFIG_LOG_CATEGORY_USER. Note: DDS_DomainParticipantFactory_finalize_instance needs to be called to finalize the Logger singleton. .
void NDDS_Config_Logger_debug | ( | NDDS_Config_Logger * | self, |
const char * | msg | ||
) |
Logs message with NDDS_CONFIG_SYSLOG_LEVEL_DEBUG and NDDS_CONFIG_LOG_CATEGORY_USER. Note: DDS_DomainParticipantFactory_finalize_instance needs to be called to finalize the Logger singleton. .
struct NDDS_Config_LoggerDevice * NDDS_Config_Logger_get_output_device | ( | NDDS_Config_Logger * | self | ) |
Return the user device registered with the logger.
self | <<in>> Cannot be NULL. |
DDS_Boolean NDDS_Config_Logger_set_output_device | ( | NDDS_Config_Logger * | self, |
struct NDDS_Config_LoggerDevice * | device | ||
) |
Register a NDDS_Config_LoggerDevice.
Register the specified logging device with the logger.
There can be at most only one device registered with the logger at any given time.
When a device is installed, the logger will stop sending the log messages to the standard output and to the file set with NDDS_Config_Logger_set_output_file.
To remove an existing device, use this function with NULL as the device parameter. After a device is removed the logger will continue sending log messages to the standard output and to the output file.
To replace an existing device with a new device, use this function providing the new device as the device parameter.
When a device is unregistered (by setting it to NULL), NDDS_Config_LoggerDevice calls the function NDDS_Config_LoggerDevice::close.