FARGOS/VISTA Object Management Environment Core  ..
FARGOS/VISTA Object Management Environment Core Table of Contents
LogMessageRecord Class Referencefinal

Log message record used to remember output format and argument values, potentially deferring formatting to a later point in time or by an external process. More...

#include <logging_api.hpp>

Classes

struct  ArgumentRecord
 
union  LOG_argument_union
 Union to hold arbitrary argument value. More...
 

Public Types

enum  { LOG_MAX_ARGUMENT_TOTAL = 3600, MIN_IOV_UNIT_LEN = 64 }
 
enum  LogPrefixMask {
  LOG_DATESTAMP =1, LOG_TIMESTAMP =2, LOG_THREAD_ID =4, LOG_FILENAME =8,
  LOG_LINE_NUMBER =16, LOG_ERROR_LEVEL =32, LOG_BINARY_FORMAT_STRING =128
}
 Log line prefix attributes. More...
 
enum  LogLevelSeverityMask {
  LOG_SEVERITY_TRACE = (1 << 4), LOG_SEVERITY_DEBUG = (1 << 5), LOG_SEVERITY_INFO = (1 << 6), LOG_SEVERITY_WARN = (1 << 7),
  LOG_SEVERITY_ERROR = (1 << 8), LOG_SEVERITY_FATAL = (1 << 9), LOG_SEVERITY_USER = (1 << 10), AND_USE_SYSLOG = 0x1,
  AND_USE_STDERR = 0x2, AND_SPECIAL_MASK = 0xf
}
 Standard bit flags to define severity level. There is a partial order of implied importance here, but each level is distinct and filtering one level does not imply anything about another. User-defined masks can start at LOG_SEVERITY_USER onwards. These are not normally referenced directly, but instead by the aliases introduced by DEFINE_COMPONENT_LOG_MASKS(). A non-standard level name can be introduced by declaring something similar to: enum { COMPONENT_LEVEL(component,level) = (1 << N) }; where N is some unused bit position (e.g., 11 or more). Example: enum { COMPONENT_LEVEL(myComponent,incoming) = (1 << 11), COMPONENT_LEVEL(myComponent,outgoing) = (1 << 12) }; See DECLARE_COMPONENT_USER_LOG_MASK() and DEFINE_COMPONENT_USER_LOG_MASK() for related convenience macros. More...
 
enum  LogArgumentType {
  LOG_ARG_TYPE_INT32 =SharedMemoryVariable::SMV_TYPE_INT32, LOG_ARG_TYPE_UINT32 =SharedMemoryVariable::SMV_TYPE_UINT32, LOG_ARG_TYPE_INT64 =SharedMemoryVariable::SMV_TYPE_INT64, LOG_ARG_TYPE_UINT64 =SharedMemoryVariable::SMV_TYPE_UINT64,
  LOG_ARG_TYPE_FLOAT =SharedMemoryVariable::SMV_TYPE_FLOAT, LOG_ARG_TYPE_DOUBLE =SharedMemoryVariable::SMV_TYPE_DOUBLE, LOG_ARG_TYPE_TEXT =SharedMemoryVariable::SMV_TYPE_STRING, LOG_ARG_TYPE_CHAR =SharedMemoryVariable::SMV_TYPE_TINY_STRING,
  LOG_ARG_TYPE_BINARY =SharedMemoryVariable::SMV_TYPE_TINY_BINARY_STRING, LOG_ARG_TYPE_POINTER =128, LOG_ARG_TYPE_ROM_TEXT = LOG_ARG_TYPE_POINTER | LOG_ARG_TYPE_TEXT, LOG_ARG_TYPE_TEXT_FRAGMENT = LOG_ARG_TYPE_POINTER | LOG_ARG_TYPE_CHAR,
  LOG_ARG_TYPE_HEX_FRAGMENT = LOG_ARG_TYPE_POINTER | LOG_ARG_TYPE_CHAR | LOG_ARG_TYPE_FLOAT, LOG_ARG_TYPE_HEX_FRAGMENT_UPPER = LOG_ARG_TYPE_POINTER | LOG_ARG_TYPE_CHAR | LOG_ARG_TYPE_DOUBLE, LOG_ARG_TYPE_POSIX_NANOSECONDS = 256 | LOG_ARG_TYPE_UINT64, LOG_ARG_TYPE_FIXED_POINT = 512 | LOG_ARG_TYPE_UINT64
}
 Argument type indicators, reuses those from the SharedMemoryVariables. More...
 
typedef uint32_t LogArgumentLenType_t
 Typedef for length of field to store argument length. More...
 

Public Member Functions

 LogMessageRecord (LogManager *mgr, uint32_t importanceFlags, const char *atFileName, uint32_t atLineNumber, int_fast32_t fileNameLen=-1) OME_ALWAYS_INLINE OME_ALWAYS_OPTIMIZE("-O3")
 
 ~LogMessageRecord ()
 
LogManagergetLogManager () const OME_ALWAYS_INLINE
 
void setLogFormat (const char *f) OME_ALWAYS_INLINE
 Set arbitrary log line format text. More...
 
int generateFormatString (unsigned int fieldNum) OME_ALWAYS_INLINE OME_ALWAYS_OPTIMIZE("-O3")
 Append appropriate format parameters for previously added argument. More...
 
SharedBufferAllocRecordformatRecordAsText (unsigned int prefixWithFlags, size_t *returnLen=nullptr, uint32_t singleThreaded=false) OME_ALWAYS_OPTIMIZE("-O3")
 Format LogMessageRecord into text, prefixing the line with the indicated attributes. More...
 
size_t writeAsTextToBuffer (unsigned int prefixWithFlags) OME_ALWAYS_INLINE OME_ALWAYS_OPTIMIZE("-O3")
 Format the LogMessageRecord as a text output line (using formatRecordAsText()) and pass the resulting buffer to the LogManager via writeDataToBuffer(). More...
 
SharedBufferAllocRecordprepareBinaryRecord (unsigned int prefixWithFlags, size_t *returnLen=nullptr, uint32_t singleThreaded=false)
 Assemble LogMesageRecord into a suitable PDU format. More...
 
size_t writeAsBinaryToBuffer (unsigned int prefixWithFlags)
 Format the LogMessageRecord as a binary record (using prepareBinaryRecord()) and pass the resulting buffer to the LogManager via writeDataToBuffer(). More...
 
template<typename T >
void emitOverflowError (const T &arg) OME_COLD_ROUTINE
 Called when too many arguments are output. More...
 

Static Public Member Functions

static void splitLongLogLine (LogMessageRecord &context, const char *line, const char *separators=",;", size_t blockLength=LogManager::MAX_LOG_LINE_LENGTH)
 Split the content of a null-terminate string across multiple log lines, breaking the lines at appropriate points (such as punctuation). More...
 
static int define_commandline_flag (const char *flagName, LogMaskPrimitiveType_t mask, const char *label=nullptr)
 Define a new log level name for the command line parser. More...
 
static int process_commandline_log_flags (LogSubsystemInfo *info, int argc, const char *argv[], int *newArgc, const char **newArgv)
 Process the standard argument list provided to an application and strip out the logging-related options. More...
 
static TextBlock_struct getSeverityLabelWithLength (uint_fast32_t level)
 Get the text label for a logging level along with its length. More...
 
static const char * getSeverityLabel (uint_fast32_t level)
 

Public Attributes

LogManagerlogMgr
 Points to LogManager used for output. More...
 
const char * logLineFormat
 Points format line for log line. More...
 
const char * sourceFile
 Points to source file, usually from FILE More...
 
struct timespec timestamp
 Timestamp of log event creation. More...
 
uint64_t threadId
 Thread Id of log event creator. More...
 
uint32_t sourceFileNameLen
 Length of sourceFile path. More...
 
uint32_t argCount
 Number of arguments for log line. More...
 
uint32_t sourceLine
 Line in source file, usually from LINE More...
 
uint32_t importanceLevel
 Value from LogLevelSeverityMask enum. More...
 
uint32_t generatedOffset
 End of log line generated via << operator. More...
 
uint32_t argCountExceeded
 
char generatedFormatLine [LogManager::MAX_LOG_LINE_LENGTH - 4]
 
struct LogMessageRecord::ArgumentRecord argList [LOG_MAX_ARGUMENT_TOTAL]
 

Detailed Description

Log message record used to remember output format and argument values, potentially deferring formatting to a later point in time or by an external process.

Member Typedef Documentation

◆ LogArgumentLenType_t

Typedef for length of field to store argument length.

This is used within a single address space, so it can be the most appropriate for the target environment. This flexiblity is not present in the argLength field of the LogLineBinaryValueHeader structure.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
LOG_MAX_ARGUMENT_TOTAL 

Maximum number of arguments for an output line.

MIN_IOV_UNIT_LEN 

Minimum amount of string bytes worth an iovec entry.

◆ LogArgumentType

Argument type indicators, reuses those from the SharedMemoryVariables.

Enumerator
LOG_ARG_TYPE_INT32 
LOG_ARG_TYPE_UINT32 
LOG_ARG_TYPE_INT64 
LOG_ARG_TYPE_UINT64 
LOG_ARG_TYPE_FLOAT 
LOG_ARG_TYPE_DOUBLE 
LOG_ARG_TYPE_TEXT 
LOG_ARG_TYPE_CHAR 
LOG_ARG_TYPE_BINARY 
LOG_ARG_TYPE_POINTER 
LOG_ARG_TYPE_ROM_TEXT 
LOG_ARG_TYPE_TEXT_FRAGMENT 
LOG_ARG_TYPE_HEX_FRAGMENT 
LOG_ARG_TYPE_HEX_FRAGMENT_UPPER 
LOG_ARG_TYPE_POSIX_NANOSECONDS 
LOG_ARG_TYPE_FIXED_POINT 

◆ LogLevelSeverityMask

Standard bit flags to define severity level. There is a partial order of implied importance here, but each level is distinct and filtering one level does not imply anything about another. User-defined masks can start at LOG_SEVERITY_USER onwards. These are not normally referenced directly, but instead by the aliases introduced by DEFINE_COMPONENT_LOG_MASKS(). A non-standard level name can be introduced by declaring something similar to: enum { COMPONENT_LEVEL(component,level) = (1 << N) }; where N is some unused bit position (e.g., 11 or more). Example: enum { COMPONENT_LEVEL(myComponent,incoming) = (1 << 11), COMPONENT_LEVEL(myComponent,outgoing) = (1 << 12) }; See DECLARE_COMPONENT_USER_LOG_MASK() and DEFINE_COMPONENT_USER_LOG_MASK() for related convenience macros.

Enumerator
LOG_SEVERITY_TRACE 
LOG_SEVERITY_DEBUG 
LOG_SEVERITY_INFO 
LOG_SEVERITY_WARN 
LOG_SEVERITY_ERROR 
LOG_SEVERITY_FATAL 
LOG_SEVERITY_USER 
AND_USE_SYSLOG 
AND_USE_STDERR 
AND_SPECIAL_MASK 

◆ LogPrefixMask

Log line prefix attributes.

Enumerator
LOG_DATESTAMP 

Include date on logline.

LOG_TIMESTAMP 

Include time on logline.

LOG_THREAD_ID 

Include thread id on logline.

LOG_FILENAME 

Include source filename on logline.

LOG_LINE_NUMBER 

Include source line number on logline.

LOG_ERROR_LEVEL 

Include level indicator (INFO, ERROR, etc.)

LOG_BINARY_FORMAT_STRING 

For binary output, include format string.

Constructor & Destructor Documentation

◆ LogMessageRecord()

LogMessageRecord::LogMessageRecord ( LogManager mgr,
uint32_t  importanceFlags,
const char *  atFileName,
uint32_t  atLineNumber,
int_fast32_t  fileNameLen = -1 
)
inline

◆ ~LogMessageRecord()

LogMessageRecord::~LogMessageRecord ( )
inline

Member Function Documentation

◆ define_commandline_flag()

int LogMessageRecord::define_commandline_flag ( const char *  flagName,
LogMaskPrimitiveType_t  mask,
const char *  label = nullptr 
)
static

Define a new log level name for the command line parser.

Parameters
flagNamedefines the name of the custom log level that will be added to the standard names such as info and error.
maskdefines the affected logging levels.
labelis an optional label that provides an level label to be output rather than standard labels such as "INFO" and "ERROR".

Referenced by AutoRegisterLogLevelName::AutoRegisterLogLevelName().

◆ formatRecordAsText()

SharedBufferAllocRecord * LogMessageRecord::formatRecordAsText ( unsigned int  prefixWithFlags,
size_t *  returnLen = nullptr,
uint32_t  singleThreaded = false 
)

Format LogMessageRecord into text, prefixing the line with the indicated attributes.

Parameters
prefixWithFlagsis a set of bit flags from the LogPrefixMask enum.
returnLenis an optional pointer to a location into which the final formatted length of the output line will be returned.
singleThreadedis a Boolean flag indicating if a background output thread is not in use, which enables some optimizations that are possible when a background output thread is not present.

A SharedBufferAllocRecord is acquired from the log manager and a text output line is assembled into the buffer.

Returns
the pointer to an allocated SharedBufferAllocRecord is returned.

References ADD_IOV_ELEMENT, LogManager::allocateBuffer(), AND_USE_SYSLOG, LogMessageRecord::ArgumentRecord::argLen, argList, LogManager::argTimeCacheTable, LogMessageRecord::LOG_argument_union::asUCstring, TextBlock_struct::bfrLen, SharedBufferAllocRecord_32::blockLen, LogManager::bufferAddress(), byteAsLowercaseHexadecimal, byteAsUppercaseHexadecimal, LogMessageRecord::LOG_argument_union::d, LogMessageRecord::LOG_argument_union::f, fixedpoint_to_ascii(), float_to_ascii(), TimePointOfGranularity< UNITS >::formatIntoString(), TimePointCacheTable::getCacheEntry(), getSeverityLabel(), getSeverityLabelWithLength(), LogMessageRecord::LOG_argument_union::i32, LogMessageRecord::LOG_argument_union::i64, importanceLevel, int_to_ascii(), TimePointCache::isForDay(), LOG_ARG_TYPE_DOUBLE, LOG_ARG_TYPE_HEX_FRAGMENT, LOG_ARG_TYPE_HEX_FRAGMENT_UPPER, LOG_ARG_TYPE_INT64, LOG_ARG_TYPE_POINTER, LOG_ARG_TYPE_ROM_TEXT, LOG_ARG_TYPE_TEXT, LOG_ARG_TYPE_TEXT_FRAGMENT, LOG_DATESTAMP, LOG_ERROR_LEVEL, LOG_FILENAME, LOG_LINE_NUMBER, LOG_THREAD_ID, LOG_TIMESTAMP, LogMessageRecord::ArgumentRecord::logArgs, logLineFormat, logMgr, LogManager::logTimePointCache, MAX_ELEMENT_TOTAL, OME_EXPECT_FALSE, OME_EXPECT_TRUE, OME_PREFETCH, LogManager::pruneDirectoryPrefix(), LogMessageRecord::LOG_argument_union::ptr, sourceFile, sourceFileNameLen, sourceLine, TextBlock_struct::textBfr, threadId, timestamp, LogMessageRecord::LOG_argument_union::u32, LogMessageRecord::LOG_argument_union::u64, uint_to_ascii(), and SharedBufferAllocRecord_32::usedLen.

◆ generateFormatString()

int LogMessageRecord::generateFormatString ( unsigned int  fieldNum)
inline

Append appropriate format parameters for previously added argument.

Parameters
fieldNumindicates the field to be appended.
Returns
the length of the complete format string.

References LogMessageRecord::ArgumentRecord::argBaseType, LogMessageRecord::ArgumentRecord::argLen, LogMessageRecord::LOG_argument_union::asChars, LogMessageRecord::ArgumentRecord::logArgs, OME_EXPECT_FALSE, OME_EXPECT_TRUE, and LogMessageRecord::LOG_argument_union::ptr.

◆ getLogManager()

LogManager* LogMessageRecord::getLogManager ( ) const
inline

Referenced by splitLongLogLine().

◆ getSeverityLabel()

const char * LogMessageRecord::getSeverityLabel ( uint_fast32_t  level)
static

◆ getSeverityLabelWithLength()

TextBlock_struct LogMessageRecord::getSeverityLabelWithLength ( uint_fast32_t  level)
static

Get the text label for a logging level along with its length.

Parameters
levelspecifies the logging level of interest.

Referenced by formatRecordAsText().

◆ prepareBinaryRecord()

SharedBufferAllocRecord * LogMessageRecord::prepareBinaryRecord ( unsigned int  prefixWithFlags,
size_t *  returnLen = nullptr,
uint32_t  singleThreaded = false 
)

Assemble LogMesageRecord into a suitable PDU format.

Parameters
prefixWithFlagsis a bit mask that indicates the output fields that should be included on the log line (such as time, thread id, file name, line number, etc.).
[out]returnLenis an optional pointer that points to a location into which the length of the output record will be stored.
singleThreadedis a Boolean flag indicating if a background output thread is not in use, which enables some optimizations that are possible when a background output thread is not present.

A SharedBufferAllocRecord is acquired from the log manager and the output data is assembled into the buffer.

Returns
the pointer to an allocated SharedBufferAllocRecord is returned.

References LogLineBinaryHeader::_reserved, ADD_IOV_ELEMENT, LogManager::allocateBuffer(), argCount, LogLineBinaryHeader::argumentCount, TextBlock_struct::bfrLen, SharedBufferAllocRecord_32::blockLen, LogManager::bufferAddress(), LogLineBinaryHeader::byteOrder, POSIXtimeInUnits< UNITS >::convertToNanosecondsSinceEpoch(), LogLineBinaryHeader::formatVersion, LogLineBinaryHeader::importanceLevel, importanceLevel, LogLineBinaryHeader::lineNumber, LOG_BINARY_FORMAT_STRING, LOG_FILENAME, LOG_LINE_BINARY_FORMAT_BE, LOG_LINE_BINARY_FORMAT_LE, LOG_LINE_BINARY_FORMAT_VER1, LOG_MAX_ARGUMENT_TOTAL, logLineFormat, logMgr, LogLineBinaryHeader::logPrefixMask, LogLineBinaryHeader::nanosecondTimestamp, LogLineBinaryHeader::offsetFileName, LogLineBinaryHeader::offsetFormatString, LogManager::pruneDirectoryPrefix(), sourceFile, sourceFileNameLen, sourceLine, TextBlock_struct::textBfr, LogLineBinaryHeader::threadId, threadId, and timestamp.

◆ process_commandline_log_flags()

int LogMessageRecord::process_commandline_log_flags ( LogSubsystemInfo info,
int  argc,
const char *  argv[],
int *  newArgc,
const char **  newArgv 
)
static

Process the standard argument list provided to an application and strip out the logging-related options.

Parameters
infopoints at the LogSystemInfo object to be initialized, usually default_LogsubsystemInfo.
argcspecifies the number of arguments in the argv array.
argvis an array of pointers to the application's command line arguments.
newArgcis a pointer to a variable into which the new argument count should be stored. Usually specified as the address of the original argc.
newArgvis a pointer to a new array of pointers to character strings. Usually specified as the original argv.

The most common usage is to perform this call immediately at the start of a program's main() routine:

int main(int argc, const char *argv[])
{
// parse and strip log-related arguments
argc, argv, &argc, argv);
...
}
See also
PROCESS_COMMAND_LINE_FLAGS()

References LogSubsystemInfo::programName.

Referenced by LogManager::initializeLogSubsystem().

◆ setLogFormat()

void LogMessageRecord::setLogFormat ( const char *  f)
inline

Set arbitrary log line format text.

Parameters
fspecifies the output format prototype.

Uses printf() syntax with the following extensions.

  • 'P' is recognized for fixed-point output.
  • 'B' is recognized for binary block output.
  • 'N' is recognized for nanoseconds output as date/time.
  • '_x' is recognized for lowercase hexadecimal.
  • '_X' is recognized for uppercase hexadecimal.

Referenced by splitLongLogLine().

◆ splitLongLogLine()

void LogMessageRecord::splitLongLogLine ( LogMessageRecord context,
const char *  line,
const char *  separators = ",;",
size_t  blockLength = LogManager::MAX_LOG_LINE_LENGTH 
)
static

Split the content of a null-terminate string across multiple log lines, breaking the lines at appropriate points (such as punctuation).

Parameters
contextis a reference to the log record being constructed.
linepoints at the text to be split across multiple lines
separatorsspecifies the characters after which the line can broken.
blockLengthspecifies the maximum number of permitted characters on a line.

References addLogArg(), argCount, generatedOffset, getLogManager(), LogManager::getLogPrefixMask(), importanceLevel, logMgr, setLogFormat(), sourceFile, sourceLine, and writeAsTextToBuffer().

◆ writeAsBinaryToBuffer()

size_t LogMessageRecord::writeAsBinaryToBuffer ( unsigned int  prefixWithFlags)
inline

Format the LogMessageRecord as a binary record (using prepareBinaryRecord()) and pass the resulting buffer to the LogManager via writeDataToBuffer().

Parameters
prefixWithFlagsis a bit mask that selects the fields to be output (e.g., time, thread id, file name, line number, etc.).

Whether the output is performed immediately or processed by a background thread is dependent on the mode of the LogManager.

Returns
The number of bytes written is returned.

References IO_Processor::currentThreadState, LogManager::get_IO_Manager(), OME_EXPECT_TRUE, IO_Processor::PROCESS_DURING_READ, and LogManager::writeDataToBuffer().

◆ writeAsTextToBuffer()

size_t LogMessageRecord::writeAsTextToBuffer ( unsigned int  prefixWithFlags)
inline

Format the LogMessageRecord as a text output line (using formatRecordAsText()) and pass the resulting buffer to the LogManager via writeDataToBuffer().

Parameters
prefixWithFlagsis a bit mask that indicates the output fields that should be included on the log line (such as time, thread id, file name, line number, etc.).

Whether the output is performed immediately or processed by a background thread is dependent on the mode of the LogManager.

Returns
The number of bytes written is returned.

References IO_Processor::currentThreadState, LogManager::get_IO_Manager(), OME_EXPECT_TRUE, IO_Processor::PROCESS_DURING_READ, and LogManager::writeDataToBuffer().

Referenced by splitLongLogLine().

Member Data Documentation

◆ argCount

uint32_t LogMessageRecord::argCount

Number of arguments for log line.

Referenced by addLogArg(), prepareBinaryRecord(), and splitLongLogLine().

◆ argCountExceeded

uint32_t LogMessageRecord::argCountExceeded

Referenced by emitOverflowError().

◆ argList

struct LogMessageRecord::ArgumentRecord LogMessageRecord::argList[LOG_MAX_ARGUMENT_TOTAL]

Referenced by addLogArg(), and formatRecordAsText().

◆ generatedFormatLine

char LogMessageRecord::generatedFormatLine[LogManager::MAX_LOG_LINE_LENGTH - 4]

◆ generatedOffset

uint32_t LogMessageRecord::generatedOffset

End of log line generated via << operator.

Referenced by splitLongLogLine().

◆ importanceLevel

uint32_t LogMessageRecord::importanceLevel

Value from LogLevelSeverityMask enum.

Referenced by formatRecordAsText(), prepareBinaryRecord(), and splitLongLogLine().

◆ logLineFormat

const char* LogMessageRecord::logLineFormat

Points format line for log line.

Referenced by formatRecordAsText(), and prepareBinaryRecord().

◆ logMgr

LogManager* LogMessageRecord::logMgr

Points to LogManager used for output.

Referenced by formatRecordAsText(), prepareBinaryRecord(), and splitLongLogLine().

◆ sourceFile

const char* LogMessageRecord::sourceFile

Points to source file, usually from FILE

Referenced by emitOverflowError(), formatRecordAsText(), prepareBinaryRecord(), and splitLongLogLine().

◆ sourceFileNameLen

uint32_t LogMessageRecord::sourceFileNameLen

Length of sourceFile path.

Referenced by formatRecordAsText(), and prepareBinaryRecord().

◆ sourceLine

uint32_t LogMessageRecord::sourceLine

Line in source file, usually from LINE

Referenced by emitOverflowError(), formatRecordAsText(), prepareBinaryRecord(), and splitLongLogLine().

◆ threadId

uint64_t LogMessageRecord::threadId

Thread Id of log event creator.

Referenced by formatRecordAsText(), and prepareBinaryRecord().

◆ timestamp

struct timespec LogMessageRecord::timestamp

Timestamp of log event creation.

Referenced by formatRecordAsText(), and prepareBinaryRecord().


The documentation for this class was generated from the following files:
LogMessageRecord::process_commandline_log_flags
static int process_commandline_log_flags(LogSubsystemInfo *info, int argc, const char *argv[], int *newArgc, const char **newArgv)
Process the standard argument list provided to an application and strip out the logging-related optio...
Definition: logging_api.cpp:637
main
int main(int argc, const char *argv[])
Definition: tick_test.cpp:5
default_LogSubsystemInfo
struct LogSubsystemInfo default_LogSubsystemInfo
Default descriptive information for Logging subsystem.
Definition: logging_api.cpp:117
Generated: Tue Jul 28 2020 16:03:27
Support Information