MADARA  3.4.1
Logger.h File Reference
#include "madara/MadaraExport.h"
#include "madara/LockType.h"
#include <vector>
#include <atomic>
#include <string>
#include <stdio.h>
#include "madara/utility/IntTypes.h"
#include "Logger.inl"

Go to the source code of this file.

Classes

class  madara::logger::Logger
 A multi-threaded logger for logging to one or more destinations. More...
 

Namespaces

 madara
 Copyright(c) 2020 Galois.
 
 madara::logger
 Provides knowledge logging services to files and terminals.
 

Macros

#define madara_logger_checked_ptr_log(loggering, level, ...)
 Fast version of the madara::logger::log method for Logger pointers. More...
 
#define madara_logger_cond_log( conditional, loggering, alt_logger_ptr, level, ...)
 High-performance logger that performs conditional logging based on first arg. More...
 
#define madara_logger_cond_log_ptrs( conditional, logger_ptr, alt_logger_ptr, level, ...)
 High-performance logger that performs conditional logging based on first arg. More...
 
#define madara_logger_log(loggering, level, ...)
 Fast version of the madara::logger::log method. More...
 
#define madara_logger_ptr_log(loggering, level, ...)
 Fast version of the madara::logger::log method for Logger pointers. More...
 

Enumerations

enum  madara::logger::LogLevels {
  madara::logger::LOG_EMERGENCY = 0 , madara::logger::LOG_ALWAYS = 0 , madara::logger::LOG_ERROR = 1 , madara::logger::LOG_WARNING = 2 ,
  madara::logger::LOG_MAJOR = 3 , madara::logger::LOG_MINOR = 4 , madara::logger::LOG_TRACE = 5 , madara::logger::LOG_DETAILED = 6 ,
  madara::logger::LOG_MADARA_MAX = 6
}
 Logging levels available for MADARA library. More...
 

Variables

const double madara::logger::TLS_THREAD_HZ_DEFAULT = 0.0
 
const int madara::logger::TLS_THREAD_LEVEL_DEFAULT = -1
 

Macro Definition Documentation

◆ madara_logger_checked_ptr_log

#define madara_logger_checked_ptr_log (   loggering,
  level,
  ... 
)
Value:
if (loggering && madara::logger::Logger::get_thread_level() >= 0) \
{ \
{ \
loggering->log(level, __VA_ARGS__); \
} \
} \
else if (loggering && level <= loggering->get_level()) \
{ \
loggering->log(level, __VA_ARGS__); \
}
static int get_thread_level(void)
Fetches thread local storage value for thread level.
Definition: Logger.inl:85

Fast version of the madara::logger::log method for Logger pointers.

This macro uses compiler optimizations to ensure that args are not evaluated unless the level is appropriate for the loggers level. This makes logging transparent and minimally invasive, performance wise

Parameters
loggeringthe logger pointer to use
levelthe logging level

Definition at line 62 of file Logger.h.

◆ madara_logger_cond_log

#define madara_logger_cond_log (   conditional,
  loggering,
  alt_logger_ptr,
  level,
  ... 
)
Value:
if (conditional && (madara::logger::Logger::get_thread_level() >= 0)) \
{ \
{ \
loggering.log(level, __VA_ARGS__); \
} \
else \
{ \
alt_logger_ptr->log(level, __VA_ARGS__); \
} \
} \
else if (conditional && level <= loggering.get_level()) \
{ \
loggering.log(level, __VA_ARGS__); \
} \
else \
{ \
alt_logger_ptr->log(level, __VA_ARGS__); \
}

High-performance logger that performs conditional logging based on first arg.

Parameters
conditionalthe primary logger pointer to use (if not null)
loggeringthe logger that will be used if conditional is true
alt_logger_ptrthe secondary logger pointer to use (should be not null)
levelthe logging level

Definition at line 114 of file Logger.h.

◆ madara_logger_cond_log_ptrs

#define madara_logger_cond_log_ptrs (   conditional,
  logger_ptr,
  alt_logger_ptr,
  level,
  ... 
)
Value:
if (conditional && \
{ \
{ \
logger_ptr->log(level, __VA_ARGS__); \
} \
else \
{ \
alt_logger_ptr->log(level, __VA_ARGS__); \
} \
} \
else if (conditional && level <= logger_ptr->get_level()) \
{ \
logger_ptr->log(level, __VA_ARGS__); \
} \
else \
{ \
alt_logger_ptr->log(level, __VA_ARGS__); \
}

High-performance logger that performs conditional logging based on first arg.

Parameters
conditionalthe primary logger pointer to use (if not null)
logger_ptrthe logger that will be used if conditional is true
alt_logger_ptrthe secondary logger pointer to use (should be not null)
levelthe logging level

Definition at line 83 of file Logger.h.

◆ madara_logger_log

#define madara_logger_log (   loggering,
  level,
  ... 
)
Value:
{ \
{ \
loggering.log(level, __VA_ARGS__); \
} \
} \
else if (level <= loggering.get_level()) \
{ \
loggering.log(level, __VA_ARGS__); \
}

Fast version of the madara::logger::log method.

This macro uses compiler optimizations to ensure that args are not evaluated unless the level is appropriate for the loggers level. This makes logging transparent and minimally invasive, performance wise

Parameters
loggeringthe logger instance to use
levelthe logging level

Definition at line 20 of file Logger.h.

◆ madara_logger_ptr_log

#define madara_logger_ptr_log (   loggering,
  level,
  ... 
)
Value:
{ \
{ \
loggering->log(level, __VA_ARGS__); \
} \
} \
else if (level <= loggering->get_level()) \
{ \
loggering->log(level, __VA_ARGS__); \
}

Fast version of the madara::logger::log method for Logger pointers.

This macro uses compiler optimizations to ensure that args are not evaluated unless the level is appropriate for the loggers level. This makes logging transparent and minimally invasive, performance wise

Parameters
loggeringthe logger to use
levelthe logging level

Definition at line 41 of file Logger.h.