FARGOS/VISTA Object Management Environment Core  ..
FARGOS/VISTA Object Management Environment Core Table of Contents
LogManager Class Reference

Implements multi-threaded, deferred physical I/O log file manager. More...

#include <logging_api.hpp>

+ Inheritance diagram for LogManager:

Classes

class  FileNameCacheEntry
 Class to maintain fileName->shortened replacement record. More...
 

Public Types

enum  { MAX_LOG_LINE_LENGTH =((16 * 4096) + (3 * 64)) }
 
typedef void(* TimeAcquisitionFP) (struct timespec *, const LogManager *)
 

Public Member Functions

void killProcessingThread ()
 
uint_fast32_t getLogPrefixMask () const OME_ALWAYS_INLINE
 Get current log prefix mask. It will be a combination of bits composed from LogMessageRecord::LogPrefixMask enums. More...
 
uint_fast32_t setLogPrefixMask (uint_fast32_t newMask) OME_ALWAYS_INLINE
 Set the log prefix mask. The new mask is defined as a combination of bits created by OR'ing together values from the LogMessageRecord::LogPrefixMask enum. More...
 
void setStripLeadingDirectories (uint_fast32_t dirCount)
 
BufferRegiongetBufferManager () const OME_ALWAYS_INLINE
 Provide access to the underlying BufferRegion. More...
 
IO_Processorget_IO_Manager () const OME_ALWAYS_INLINE
 Provide access to underlying IO_Processor. More...
 
 LogManager (SharedMemoryVariableNode *parentNode, OS_HANDLE_TYPE output_fd, uint_fast8_t useSeparateThread, const char *appName, uint_fast32_t logLinePrefixMask=~0U, uint_fast32_t maxLineSize=(LogManager::MAX_LOG_LINE_LENGTH - sizeof(SharedBufferAllocRecord)), unsigned char *region=nullptr, size_t bytes=(LogManager::MAX_LOG_LINE_LENGTH *64))
 Create anonymous buffer. More...
 
virtual ~LogManager ()
 
int closeLog ()
 Close the open log file. More...
 
SharedBufferAllocRecordallocateBuffer () OME_ALWAYS_INLINE
 Allocate a buffer for a log record. More...
 
void returnBuffer (SharedBufferAllocRecord *rec) OME_ALWAYS_INLINE
 Return a buffer previously allocated by allocateBuffer(). More...
 
unsigned char * bufferAddress (SharedBufferAllocRecord *rec, size_t *bufferLen=nullptr) const OME_ALWAYS_INLINE
 Obtain the physical address and length of a buffer from a SharedBufferAllocRecord, which are data structures intended for use in shared memory segments and utilize relative offsets, enabling simultaneous use by distinct processes that have a segment mapped to different address regions. More...
 
ssize_t writeDataToBuffer (SharedBufferAllocRecord *rec)
 Low-level routine to add a record to log buffer. More...
 
ssize_t copyAndWriteDataToBuffer (SharedBufferAllocRecord *rec, const void *data, size_t len)
 Low-level routine to copy data and add a record to log buffer. More...
 
ssize_t copyAndWriteData (const void *data, size_t len)
 Write block of data to the log buffer. More...
 
const TextBlock_struct pruneDirectoryPrefix (const char *fileName, const int_fast32_t fileNameLen)
 Return the source file name pruned of any leading directory components as indicated by settings imposed by setStripLeadingDirectories() and the stripFilePrefix table. More...
 
const char * getErrorCondition () const OME_ALWAYS_INLINE
 Return error condition text detected. This is normally used to obtain an explanation of errors reported by the operating system when attempting to write log records. More...
 
void setErrorCondition (const char *messageText) OME_ALWAYS_INLINE
 Set error condition text. More...
 
void setTimeAcquisitionRoutine (TimeAcquisitionFP routine)
 Set alternate timestamp acquisition routine. More...
 
TimeAcquisitionFP getTimeAcquisitionRoutine () const OME_ALWAYS_INLINE
 Return pointer to the time acquistion routine associated with the log. More...
 
void getTimestamp (struct timespec *timestamp) const OME_ALWAYS_INLINE
 Return the current time using the timestamp acquisition routine associated with the log. More...
 

Static Public Member Functions

static void defaultGetTime (struct timespec *timestamp, const LogManager *logMgr)
 
static uint_fast32_t addLogComponent (const char *componentName, LogMaskType_t *maskLocation, LogMaskPrimitiveType_t initialMask=0)
 Add definition of new log component. More...
 
static int initializeLogSubsystem (int *newArgc, const char **newArgv, const int argc, const char *argv[], const char *componentName=nullptr, LogMaskType_t *appMaskLocation=nullptr, const uint_fast32_t maxLines=128, const LogMaskPrimitiveType_t logPrefixMask=~0U)
 Initialize logging-specific parameters by passing command line arguments. More...
 
static LogManagernewLogToFileDescriptor (SharedMemoryVariableNode *parentNode, OS_HANDLE_TYPE fd, LogMaskPrimitiveType_t logPrefixMask, uint_fast8_t useSeparateThreads, unsigned char *region, size_t bytes)
 
static LogManagernewLogFileForComponent (SharedMemoryVariableNode *parentNode, const char *app, uint_fast32_t filenameCreateFlags, LogMaskPrimitiveType_t logPrefixMask, uint_fast8_t enableMap, uint_fast8_t useSeparateThreads, size_t desiredRegionSize=0, size_t reserveAtEnd=0, const char *inDir=getenv(DEFAULT_LOG_DIRECTORY_ENVIRONMENT_VARIABLE))
 Create a new file and LogManager for a component. If desired, also create an auxilary backing file for the buffer and create a background thread to perform the actual output. More...
 
static LogManagernewStandardLogFile (const char *namedComponent=nullptr, LogMaskPrimitiveType_t filenameCreateFlags=~0U, SharedMemoryVariableNode *parentNode=nullptr)
 High-level routine to create a standard log file associated with a component. More...
 
static int commitLogRecord (SharedBufferAllocRecord *rec, IO_Processor *controller)
 IO_processor-compatible process routine used to write buffered data to an open file. More...
 
static void setSourceForCustomLogTime (POSIXtimeInNanoseconds *timeSource)
 Convenience routine to set location of a custom time value for log lines. More...
 
static void returnCustomLogTime (struct timespec *timestamp, const LogManager *logMgr)
 Convenience routine to retrieve a custom timestamp for log lines. More...
 

Public Attributes

TimePointCache logTimePointCache
 
TimePointCacheTable argTimeCacheTable
 
char logFileName [256]
 

Static Public Attributes

static LogManagerDEFAULT_LogManager
 Default log manager used, set by newStandardLogFile() More...
 
static LogManagerSTDOUT_LogManager = &realize_STDOUT_Manager
 Created automatically. More...
 
static LogManagerSTDERR_LogManager = &realize_STDERR_Manager
 Created automatically. More...
 

Protected Types

enum  { MAX_FILE_PREFIX_ENTRIES = 8, FILENAME_CACHE_SIZE = 4 }
 

Static Protected Member Functions

static void initializePrefixTable ()
 Initializes the file name prefix tables. More...
 

Protected Attributes

BufferRegionbfrMgr
 
IO_ProcessorioMgr
 
const char * errorCondition
 
size_t blockSize
 
uint_fast32_t logPrefixMask
 
uint32_t stripLeadingDirectories
 
uint32_t _explicitAlignmentPaddding
 
uint32_t cachedFileNameCount
 
TimeAcquisitionFP getTimestampRoutine
 
FileNameCacheEntry fileNameReplacementCache [FILENAME_CACHE_SIZE]
 

Static Protected Attributes

static uint16_t filePrefixLen [MAX_FILE_PREFIX_ENTRIES]
 
static uint16_t filePrefix2Len [MAX_FILE_PREFIX_ENTRIES]
 
static const char * stripFilePrefix [MAX_FILE_PREFIX_ENTRIES]
 
static const char * stripFilePrefix2 [MAX_FILE_PREFIX_ENTRIES]
 

Private Member Functions

FileNameCacheEntry findCachedFileName (const char *fileName) const
 
void addCachedFileName (const char *fileNameKey, const TextBlock_struct entry)
 

Detailed Description

Implements multi-threaded, deferred physical I/O log file manager.

Member Typedef Documentation

◆ TimeAcquisitionFP

typedef void(* LogManager::TimeAcquisitionFP) (struct timespec *, const LogManager *)

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
protected
Enumerator
MAX_FILE_PREFIX_ENTRIES 

table size for maximum distinct directory prefixes

FILENAME_CACHE_SIZE 

max entries in prune filename cache

◆ anonymous enum

anonymous enum
Enumerator
MAX_LOG_LINE_LENGTH 

Default maximum length of a log line.

Constructor & Destructor Documentation

◆ LogManager()

LogManager::LogManager ( SharedMemoryVariableNode parentNode,
OS_HANDLE_TYPE  output_fd,
uint_fast8_t  useSeparateThread,
const char *  appName,
uint_fast32_t  logLinePrefixMask = ~0U,
uint_fast32_t  maxLineSize = (LogManager::MAX_LOG_LINE_LENGTH - sizeof(SharedBufferAllocRecord)),
unsigned char *  region = nullptr,
size_t  bytes = (LogManager::MAX_LOG_LINE_LENGTH * 64) 
)

Create anonymous buffer.

Parameters
parentNodeis a shared memory naming node under which the statistics will be rooted.
output_fddefines open descriptor associated with output file.
useSeparateThreadis a Boolean flag indicating if transfer to the log file should be performed by directly by the thread writing data to the log or if should be handled by background thread.
appNameidentifies the application tag associated with messages emitted to the log.
logLinePrefixMaskspecifies the default bit mask for enabled output fields (e.g., time, thread id, file name, line number, etc.).
maxLineSizeidentifies the maximum possible output records that can be buffered before an attempt to write additional data to the log will block.
regionis a pointer to a pre-allocated buffer, which could be a memory-mapped region. If a null pointer is passed, a buffer will be dynamically allocated.
bytesindicates the size of the buffer. If pre-allocated, then bytes specifies the amount of space usable in the pre-allocated buffer; otherwise it indicates the amount of space to be dynamically allocated.
Note
If the buffer is dynamically allocated, it will be freed at the time the LogManager object is deleted. If the buffer was pre-allocated, the buffer will not be freed.

References _INVALID_DESCRIPTOR, bfrMgr, blockSize, commitLogRecord(), defaultGetTime(), getTimestampRoutine, ioMgr, LOGFILE_BFR_MAGIC_NUMBER, logPrefixMask, BufferRegion::NOT_OWNER, OME_EXPECT_TRUE, BufferRegion::OWN_BLOCK, IO_Processor::PROCESS_DURING_READ, IO_Processor::PROCESS_THREAD, BufferRegion::setOwnership(), and IO_Processor::waitForThreadStart().

Referenced by newLogToFileDescriptor().

◆ ~LogManager()

Member Function Documentation

◆ addCachedFileName()

void LogManager::addCachedFileName ( const char *  fileNameKey,
const TextBlock_struct  entry 
)
private

Referenced by pruneDirectoryPrefix().

◆ addLogComponent()

uint_fast32_t LogManager::addLogComponent ( const char *  componentName,
LogMaskType_t maskLocation,
LogMaskPrimitiveType_t  initialMask = 0 
)
static

Add definition of new log component.

Parameters
componentNameidentifies the component
maskLocationpoints to the memory location which will maintain the log mask.
initialMaskspecifies the initial log mask for the component.
Note
The effective log mask is determined by including any corresponding levels set by +logmask command arguments and then removing any levels specified by a -logmask command line arguments.

Referenced by AutoRegisterLogComponent::AutoRegisterLogComponent(), and initializeLogSubsystem().

◆ allocateBuffer()

SharedBufferAllocRecord* LogManager::allocateBuffer ( )
inline

Allocate a buffer for a log record.

The SharedBufferAllocRecord describing the buffer is returned. These records are special in that they can be used with shared memory segments and use relative offsets rather than physical addresses.

References BufferRegion::allocateBlock(), bfrMgr, and blockSize.

Referenced by LogMessageRecord::formatRecordAsText(), and LogMessageRecord::prepareBinaryRecord().

◆ bufferAddress()

unsigned char* LogManager::bufferAddress ( SharedBufferAllocRecord rec,
size_t *  bufferLen = nullptr 
) const
inline

Obtain the physical address and length of a buffer from a SharedBufferAllocRecord, which are data structures intended for use in shared memory segments and utilize relative offsets, enabling simultaneous use by distinct processes that have a segment mapped to different address regions.

Parameters
recspecifies the buffer.
[out]bufferLenis an optional argument that points at a location into which the length of the buffer will be stored.

References bfrMgr, BufferRegion::blockAddress(), IO_Processor::bufferAddress(), ioMgr, OME_EXPECT_TRUE, and SharedBufferAllocRecord_32::usedLen.

Referenced by LogMessageRecord::formatRecordAsText(), and LogMessageRecord::prepareBinaryRecord().

◆ closeLog()

◆ commitLogRecord()

int LogManager::commitLogRecord ( SharedBufferAllocRecord rec,
IO_Processor controller 
)
static

IO_processor-compatible process routine used to write buffered data to an open file.

Parameters
recpoints at the buffer to be output.
controllerpoints at the IO_Processor driving the output processing.

References IO_Processor::bufferAddress(), IO_Processor::descriptor, and waitForBufferAllocRecordToBeReady().

Referenced by LogManager().

◆ copyAndWriteData()

ssize_t LogManager::copyAndWriteData ( const void *  data,
size_t  len 
)
inline

Write block of data to the log buffer.

Parameters
datapoints to the block of data to be copied into the buffer.
lenindicates the number of bytes to be copied.

When this routine returns, the referenced memory block has been copied and it can be reused.

References BufferRegion::allocateBlock(), bfrMgr, and copyAndWriteDataToBuffer().

Referenced by closeLog().

◆ copyAndWriteDataToBuffer()

ssize_t LogManager::copyAndWriteDataToBuffer ( SharedBufferAllocRecord rec,
const void *  data,
size_t  len 
)

Low-level routine to copy data and add a record to log buffer.

Parameters
recpoints at the allocation record for the buffer.
datapoints to the block of data to be copied into the buffer.
lenindicates the number of bytes to be copied.
Returns
the number of bytes written

References bfrMgr, BufferRegion::blockAddress(), SharedBufferAllocRecord_32::blockLen, OME_EXPECT_FALSE, OME_PREFETCH, SharedBufferAllocRecord_32::usedLen, and writeDataToBuffer().

Referenced by copyAndWriteData().

◆ defaultGetTime()

static void LogManager::defaultGetTime ( struct timespec *  timestamp,
const LogManager logMgr 
)
inlinestatic

◆ findCachedFileName()

LogManager::FileNameCacheEntry LogManager::findCachedFileName ( const char *  fileName) const
private

Referenced by pruneDirectoryPrefix().

◆ get_IO_Manager()

IO_Processor* LogManager::get_IO_Manager ( ) const
inline

Provide access to underlying IO_Processor.

References ioMgr.

Referenced by LogMessageRecord::writeAsBinaryToBuffer(), and LogMessageRecord::writeAsTextToBuffer().

◆ getBufferManager()

BufferRegion* LogManager::getBufferManager ( ) const
inline

Provide access to the underlying BufferRegion.

References bfrMgr.

◆ getErrorCondition()

const char* LogManager::getErrorCondition ( ) const
inline

Return error condition text detected. This is normally used to obtain an explanation of errors reported by the operating system when attempting to write log records.

References errorCondition.

◆ getLogPrefixMask()

uint_fast32_t LogManager::getLogPrefixMask ( ) const
inline

Get current log prefix mask. It will be a combination of bits composed from LogMessageRecord::LogPrefixMask enums.

References logPrefixMask.

Referenced by LogMessageRecord::splitLongLogLine().

◆ getTimeAcquisitionRoutine()

TimeAcquisitionFP LogManager::getTimeAcquisitionRoutine ( ) const
inline

Return pointer to the time acquistion routine associated with the log.

References getTimestampRoutine.

◆ getTimestamp()

void LogManager::getTimestamp ( struct timespec *  timestamp) const
inline

Return the current time using the timestamp acquisition routine associated with the log.

Parameters
timestamppoints to the timespec structure into which the current time will be stored.

Referenced by LogMessageRecord::LogMessageRecord().

◆ initializeLogSubsystem()

int LogManager::initializeLogSubsystem ( int *  newArgc,
const char **  newArgv,
const int  argc,
const char *  argv[],
const char *  componentName = nullptr,
LogMaskType_t appMaskLocation = nullptr,
const uint_fast32_t  maxLines = 128,
const LogMaskPrimitiveType_t  logPrefixMask = ~0U 
)
static

Initialize logging-specific parameters by passing command line arguments.

Parameters
newArgcis a pointer to a location into which a new argc value will be placed.
newArgvis a pointer to an array of const char pointers that will be set to a subset of the argv array after any logging-related arguments have been removed.
argcis a count of the arguments in argv array
argvis an array of const char pointers that provide command line arguments.
componentNameis an optional argument which identifies the application or component name. If not provided, the application name is obtained from argv[0].
appMaskLocationis an optional argument that points to the memory location which will hold the log mask for the application. If provided, it overrides the always-defined "app" log level mask and references to the component's active log Level mask are aliased to be the same entity as that for "app".
maxLinesindicates maximum number of unwritten log lines to be able to buffer. The larger the value, the more output lines that can be queued up at the cost of a greater amount of permanently allocated storage. If multithreaded mode is not used, a very small value, like 1, is viable.
logPrefixMaskis an optional argument that specifies the log line output fields that should be output for each log line. It defaults to all fields. The LogMessageRecord::LogPrefixMask enum defines the bits of interest.

The LogMessageRecord::process_commandline_log_flags() routine is invoked to strip any logging-related arguments from command line argument list and generate a new argc and argv[].

Returns
Currently always returns 0 to indicate success.

References addLogComponent(), default_LogSubsystemInfo, LogSubsystemInfo::defaultLogPrefix, logPrefixMask, LogSubsystemInfo::maxPendingLogLines, OME_EXPECT_TRUE, LogMessageRecord::process_commandline_log_flags(), LogSubsystemInfo::processID, and LogSubsystemInfo::programName.

◆ initializePrefixTable()

void LogManager::initializePrefixTable ( )
staticprotected

Initializes the file name prefix tables.

Called once, either by initializeLogSubsystem(), but usually by the LogManager() constructor via the static constructors that create the STDOUT_LogManager and STDERR_LogManager objects.

◆ killProcessingThread()

void LogManager::killProcessingThread ( )
inline

◆ newLogFileForComponent()

LogManager * LogManager::newLogFileForComponent ( SharedMemoryVariableNode parentNode,
const char *  app,
uint_fast32_t  filenameCreateFlags,
LogMaskPrimitiveType_t  logPrefixMask,
uint_fast8_t  enableMap,
uint_fast8_t  useSeparateThreads,
size_t  desiredRegionSize = 0,
size_t  reserveAtEnd = 0,
const char *  inDir = getenv(DEFAULT_LOG_DIRECTORY_ENVIRONMENT_VARIABLE) 
)
static

Create a new file and LogManager for a component. If desired, also create an auxilary backing file for the buffer and create a background thread to perform the actual output.

Parameters
parentNode
appspecifies the application's name
filenameCreateFlags
logPrefixMaskspecifies the default bit mask for enabled output fields (e.g., time, thread id, file name, line number, etc.).
enableMapis a Boolean flag indicating if the in-progress work buffer should be maintained in an auxillary memory-mapped file, which allows the in-progress work to be recovered if the process crashes.
useSeparateThreadsis a Boolean flag that selects use of a separate output thread. By default, the thread that submits a log message is used to make the eventual kernel call to output the data, which can cause it to be blocked waiting for output to complete. Using a separate output thread allows a thread to submit a log line and continue working while the output thread works on processing the submitted work in the background.
desiredRegionSizespecifies how large the memory-mapped auxillary file should be.
reserveAtEndspecifies the amount at the end of the region which should be left untouched.
inDirspecifies the directory into which the log file should be created.

See newLogToFileDescriptor().

References default_LogSubsystemInfo, fd, MAX_LOG_LINE_LENGTH, LogSubsystemInfo::maxPendingLogLines, OS_HANDLE_TYPE, and stderr.

◆ newLogToFileDescriptor()

LogManager * LogManager::newLogToFileDescriptor ( SharedMemoryVariableNode parentNode,
OS_HANDLE_TYPE  fd,
LogMaskPrimitiveType_t  logPrefixMask,
uint_fast8_t  useSeparateThreads,
unsigned char *  region,
size_t  bytes 
)
static

◆ newStandardLogFile()

LogManager * LogManager::newStandardLogFile ( const char *  namedComponent = nullptr,
LogMaskPrimitiveType_t  filenameCreateFlags = ~0U,
SharedMemoryVariableNode parentNode = nullptr 
)
static

High-level routine to create a standard log file associated with a component.

Parameters
namedComponentspecifies the application name; if not specified, it will be obtained from the process name provided to initializeLogSubsystem().
filenameCreateFlagsspecifies the elements used to compose the log file's name.
parentNodespecifies the node under which the shared memory variables associated with the LogManager should be parented.

See newLogFileForComponent().

References default_LogSubsystemInfo, and LogSubsystemInfo::programName.

◆ pruneDirectoryPrefix()

const TextBlock_struct LogManager::pruneDirectoryPrefix ( const char *  fileName,
const int_fast32_t  fileNameLen 
)

◆ returnBuffer()

void LogManager::returnBuffer ( SharedBufferAllocRecord rec)
inline

Return a buffer previously allocated by allocateBuffer().

Parameters
recpoints at the buffer to be returned.

References bfrMgr, and BufferRegion::returnBlock().

◆ returnCustomLogTime()

void LogManager::returnCustomLogTime ( struct timespec *  timestamp,
const LogManager logMgr 
)
static

Convenience routine to retrieve a custom timestamp for log lines.

Parameters
timestamppoints to the structure into which the current log line time will be stored.
logMgrreferences the LogManager for the log file being processed. It is ignored in this implementation, as it only supports a single time source.

◆ setErrorCondition()

void LogManager::setErrorCondition ( const char *  messageText)
inline

Set error condition text.

References errorCondition.

◆ setLogPrefixMask()

uint_fast32_t LogManager::setLogPrefixMask ( uint_fast32_t  newMask)
inline

Set the log prefix mask. The new mask is defined as a combination of bits created by OR'ing together values from the LogMessageRecord::LogPrefixMask enum.

Returns
The original mask value will be returned as a convenience so that it can be restored after a temporary change.

NOTE: normally the log prefix mask is set at creation time and never touched, thus all log lines would have an identical prefix format. In some rare circumstances, this may not be desirable, such as a multi-line dump of a buffer's contents.

References logPrefixMask.

◆ setSourceForCustomLogTime()

void LogManager::setSourceForCustomLogTime ( POSIXtimeInNanoseconds timeSource)
static

Convenience routine to set location of a custom time value for log lines.

Parameters
timeSourcepoints to the memory location in which the current log line time will be maintained.

Under normal usage scenarios, a call to setTimeAquisitionRoutine(LogManager::returnCustomLogTime) should subsequently be made on the relevant LogManager objects.

◆ setStripLeadingDirectories()

void LogManager::setStripLeadingDirectories ( uint_fast32_t  dirCount)
inline

◆ setTimeAcquisitionRoutine()

void LogManager::setTimeAcquisitionRoutine ( TimeAcquisitionFP  routine)
inline

Set alternate timestamp acquisition routine.

Parameters
routineis the entry point of the function. If a null pointer is provided, the defaultGetTime() routine is used.

References defaultGetTime(), and getTimestampRoutine.

◆ writeDataToBuffer()

ssize_t LogManager::writeDataToBuffer ( SharedBufferAllocRecord rec)

Low-level routine to add a record to log buffer.

Parameters
recpoints at the allocation record for the buffer.
Returns
the number of bytes written

References IO_Processor_Statistics::bytesRead, ioMgr, IO_Processor::statistics, IO_Processor::submitOrProcessBlock(), and SharedBufferAllocRecord_32::usedLen.

Referenced by copyAndWriteDataToBuffer(), LogMessageRecord::writeAsBinaryToBuffer(), and LogMessageRecord::writeAsTextToBuffer().

Member Data Documentation

◆ _explicitAlignmentPaddding

uint32_t LogManager::_explicitAlignmentPaddding
protected

◆ argTimeCacheTable

TimePointCacheTable LogManager::argTimeCacheTable

◆ bfrMgr

◆ blockSize

size_t LogManager::blockSize
protected

Referenced by allocateBuffer(), and LogManager().

◆ cachedFileNameCount

uint32_t LogManager::cachedFileNameCount
protected

◆ DEFAULT_LogManager

LogManager * LogManager::DEFAULT_LogManager
static

Default log manager used, set by newStandardLogFile()

Default LogManager object.

Must be assigned.

◆ errorCondition

const char* LogManager::errorCondition
protected

◆ fileNameReplacementCache

FileNameCacheEntry LogManager::fileNameReplacementCache[FILENAME_CACHE_SIZE]
protected

◆ filePrefix2Len

uint16_t LogManager::filePrefix2Len
staticprotected

Referenced by pruneDirectoryPrefix().

◆ filePrefixLen

uint16_t LogManager::filePrefixLen
staticprotected

Referenced by pruneDirectoryPrefix().

◆ getTimestampRoutine

TimeAcquisitionFP LogManager::getTimestampRoutine
protected

◆ ioMgr

◆ logFileName

char LogManager::logFileName[256]

◆ logPrefixMask

uint_fast32_t LogManager::logPrefixMask
protected

◆ logTimePointCache

TimePointCache LogManager::logTimePointCache

◆ STDERR_LogManager

LogManager * LogManager::STDERR_LogManager = &realize_STDERR_Manager
static

Created automatically.

Automatically created LogManager object for standard error.

The environment variable USE_STDERR_THREAD controls whether or not a separate processing thread is enabled. The environment variable STDERR_LINES can specify the size of the buffer in lines.

◆ STDOUT_LogManager

LogManager * LogManager::STDOUT_LogManager = &realize_STDOUT_Manager
static

Created automatically.

Automatically created LogManager object for standard error.

The environment variable USE_STDOUT_THREAD controls whether or not a separate processing thread is enabled. The environment variable STDOUT_LINES can specify the size of the buffer in lines.

◆ stripFilePrefix

const char * LogManager::stripFilePrefix
staticprotected

Referenced by pruneDirectoryPrefix().

◆ stripFilePrefix2

const char * LogManager::stripFilePrefix2
staticprotected

Referenced by pruneDirectoryPrefix().

◆ stripLeadingDirectories

uint32_t LogManager::stripLeadingDirectories
protected

The documentation for this class was generated from the following files:
Generated: Fri Jul 31 2020 18:19:16
Support Information