unilink  0.4.3
A simple C++ library for unified async communication
logger.hpp File Reference
#include <atomic>
#include <chrono>
#include <functional>
#include <memory>
#include <string>
#include <string_view>
#include <vector>
#include "log_rotation.hpp"
#include "unilink/base/visibility.hpp"

Go to the source code of this file.

Classes

struct  unilink::diagnostics::LogEntry
 Log entry structure for async processing. More...
 
struct  unilink::diagnostics::AsyncLogConfig
 Async logging configuration. More...
 
struct  unilink::diagnostics::AsyncLogStats
 Async logging statistics. More...
 
class  unilink::diagnostics::Logger
 Centralized logging system with async support. More...
 

Namespaces

 
 

Macros

#define UNILINK_LOG_DEBUG(component, operation, message)
 Convenience macros for logging. More...
 
#define UNILINK_LOG_INFO(component, operation, message)
 
#define UNILINK_LOG_WARNING(component, operation, message)
 
#define UNILINK_LOG_ERROR(component, operation, message)
 
#define UNILINK_LOG_CRITICAL(component, operation, message)
 
#define UNILINK_LOG_DEBUG_IF(component, operation, message)
 Conditional logging macros (only evaluate message if level is enabled) More...
 
#define UNILINK_LOG_INFO_IF(component, operation, message)
 
#define UNILINK_LOG_PERF_START(component, operation)
 Performance logging macros for expensive operations. More...
 
#define UNILINK_LOG_PERF_END(component, operation)
 

Enumerations

enum class  unilink::diagnostics::LogLevel {
  unilink::diagnostics::DEBUG = 0 , unilink::diagnostics::INFO = 1 , unilink::diagnostics::WARNING = 2 , unilink::diagnostics::ERROR = 3 ,
  unilink::diagnostics::CRITICAL = 4
}
 Log severity levels. More...
 
enum class  unilink::diagnostics::LogOutput { unilink::diagnostics::CONSOLE = 0x01 , unilink::diagnostics::FILE = 0x02 , unilink::diagnostics::CALLBACK = 0x04 }
 Log output destinations. More...
 

Macro Definition Documentation

◆ UNILINK_LOG_CRITICAL

#define UNILINK_LOG_CRITICAL (   component,
  operation,
  message 
)
Value:
do { \
unilink::diagnostics::Logger::instance().critical(component, operation, message); \
} \
} while (0)

Definition at line 286 of file logger.hpp.

◆ UNILINK_LOG_DEBUG

#define UNILINK_LOG_DEBUG (   component,
  operation,
  message 
)
Value:
do { \
unilink::diagnostics::Logger::instance().debug(component, operation, message); \
} \
} while (0)

Convenience macros for logging.

Definition at line 258 of file logger.hpp.

◆ UNILINK_LOG_DEBUG_IF

#define UNILINK_LOG_DEBUG_IF (   component,
  operation,
  message 
)
Value:
do { \
UNILINK_LOG_DEBUG(component, operation, message); \
} \
} while (0)

Conditional logging macros (only evaluate message if level is enabled)

Definition at line 296 of file logger.hpp.

◆ UNILINK_LOG_ERROR

#define UNILINK_LOG_ERROR (   component,
  operation,
  message 
)
Value:
do { \
unilink::diagnostics::Logger::instance().error(component, operation, message); \
} \
} while (0)

Definition at line 279 of file logger.hpp.

◆ UNILINK_LOG_INFO

#define UNILINK_LOG_INFO (   component,
  operation,
  message 
)
Value:
do { \
unilink::diagnostics::Logger::instance().info(component, operation, message); \
} \
} while (0)

Definition at line 265 of file logger.hpp.

◆ UNILINK_LOG_INFO_IF

#define UNILINK_LOG_INFO_IF (   component,
  operation,
  message 
)
Value:
do { \
UNILINK_LOG_INFO(component, operation, message); \
} \
} while (0)

Definition at line 303 of file logger.hpp.

◆ UNILINK_LOG_PERF_END

#define UNILINK_LOG_PERF_END (   component,
  operation 
)
Value:
do { \
auto _perf_end_##operation = std::chrono::high_resolution_clock::now(); \
using _us_t = std::chrono::microseconds; \
auto _diff_##operation = _perf_end_##operation - _perf_start_##operation; \
auto _perf_duration_##operation = std::chrono::duration_cast<_us_t>(_diff_##operation).count(); \
UNILINK_LOG_DEBUG(component, operation, "Duration: " + std::to_string(_perf_duration_##operation) + " μs"); \
} \
} while (0)

Definition at line 319 of file logger.hpp.

◆ UNILINK_LOG_PERF_START

#define UNILINK_LOG_PERF_START (   component,
  operation 
)
Value:
auto _perf_start_##operation = \
? std::chrono::high_resolution_clock::now() \
: std::chrono::high_resolution_clock::time_point()

Performance logging macros for expensive operations.

Definition at line 313 of file logger.hpp.

◆ UNILINK_LOG_WARNING

#define UNILINK_LOG_WARNING (   component,
  operation,
  message 
)
Value:
do { \
unilink::diagnostics::Logger::instance().warning(component, operation, message); \
} \
} while (0)

Definition at line 272 of file logger.hpp.