peary/log/log.hpp

Peary Logging Macros. More…

Defines

Name
FILE_NAME Base name of the file without the directory.
LOG_NAME Name of the log stream.
IFLOG(level) Execute a block only if the reporting level is high enough.
LOG(level) Create a logging stream if the reporting level is high enough.
LOG_PROGRESS(level, identifier) Create a logging stream that overwrites the line if the previous message has the same identifier.
LOGTIME Get the current timestamp for logging.

Detailed Description

Peary Logging Macros.

Copyright: Copyright (c) 2016-2025 CERN and the Peary Caribou authors. This software is distributed under the terms of the LGPL-3.0-only License, copied verbatim in the file “LICENSE.md”. SPDX-License-Identifier: LGPL-3.0-only

Macros Documentation

define FILE_NAME

  #define __FILE_NAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
  

Base name of the file without the directory.

define LOG_NAME

  #define __LOG_NAME__ ""
  

Name of the log stream.

define IFLOG

  #define IFLOG(
    level
)
    if(peary::log::LogLevel::level <= peary::log::Log::getReportingLevel() && !peary::log::Log::getStreams().empty())
  

Execute a block only if the reporting level is high enough.

Parameters:

  • level The minimum log level

define LOG

  #define LOG(
    level
)
    if(peary::log::LogLevel::level <= peary::log::Log::getReportingLevel() && !peary::log::Log::getStreams().empty())       \
    peary::log::Log().getStream(peary::log::LogLevel::level,                                                                \
                                __FILE_NAME__,                                                                              \
                                std::string(static_cast<const char*>(__func__)),                                            \
                                __LINE__,                                                                                   \
                                __LOG_NAME__)
  

Create a logging stream if the reporting level is high enough.

Parameters:

  • level The log level of the stream

define LOG_PROGRESS

  #define LOG_PROGRESS(
    level,
    identifier
)
    if(peary::log::LogLevel::level <= peary::log::Log::getReportingLevel() && !peary::log::Log::getStreams().empty())       \
    peary::log::Log().getProcessStream(identifier,                                                                          \
                                       peary::log::LogLevel::level,                                                         \
                                       __FILE_NAME__,                                                                       \
                                       std::string(static_cast<const char*>(__func__)),                                     \
                                       __LINE__,                                                                            \
                                       __LOG_NAME__)
  

Create a logging stream that overwrites the line if the previous message has the same identifier.

Parameters:

  • level The log level of the stream
  • identifier Identifier for this stream to determine overwrites

define LOGTIME

  #define LOGTIME peary::log::Log::getTimestamp()
  

Get the current timestamp for logging.

Source code

  
#pragma once

#ifdef WIN32
#define __func__ __FUNCTION__
#endif

#include <cstring>
#include <mutex>
#include <ostream>
#include <sstream>
#include <string>
#include <vector>

#include "peary/log/logging.hpp"

#ifndef __FILE_NAME__
#define __FILE_NAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
#endif

#ifdef PEARY_DEVICE_NAME
#define __LOG_NAME__ PEARY_DEVICE_NAME
#else
#define __LOG_NAME__ ""
#endif

#define IFLOG(level)                                                                                                        \
    if(peary::log::LogLevel::level <= peary::log::Log::getReportingLevel() && !peary::log::Log::getStreams().empty())

#define LOG(level)                                                                                                          \
    if(peary::log::LogLevel::level <= peary::log::Log::getReportingLevel() && !peary::log::Log::getStreams().empty())       \
    peary::log::Log().getStream(peary::log::LogLevel::level,                                                                \
                                __FILE_NAME__,                                                                              \
                                std::string(static_cast<const char*>(__func__)),                                            \
                                __LINE__,                                                                                   \
                                __LOG_NAME__)

#define LOG_PROGRESS(level, identifier)                                                                                     \
    if(peary::log::LogLevel::level <= peary::log::Log::getReportingLevel() && !peary::log::Log::getStreams().empty())       \
    peary::log::Log().getProcessStream(identifier,                                                                          \
                                       peary::log::LogLevel::level,                                                         \
                                       __FILE_NAME__,                                                                       \
                                       std::string(static_cast<const char*>(__func__)),                                     \
                                       __LINE__,                                                                            \
                                       __LOG_NAME__)

#define LOGTIME peary::log::Log::getTimestamp()
  

Updated on 2025-11-14 at 11:31:23 +0100