Program Listing for File Logger.h

Return to documentation for file (include/gwmodelpp/Logger.h)

#ifndef GWMLOGGER_H
#define GWMLOGGER_H

#include <functional>
#include <string>

#define GWM_LOGGING(MESSAGE, LEVEL) gwm::Logger::printer((MESSAGE), (LEVEL), __FUNCTION__, __FILE__)

#define GWM_LOG_DEBUG(MESSAGE) gwm::Logger::printer((MESSAGE), Logger::LogLevel::LOG_DEBUG, __FUNCTION__, __FILE__)

#define GWM_LOG_INFO(MESSAGE) gwm::Logger::printer((MESSAGE), Logger::LogLevel::LOG_INFO, __FUNCTION__, __FILE__)

#define GWM_LOG_WARNNING(MESSAGE) gwm::Logger::printer((MESSAGE), Logger::LogLevel::LOG_WARNING, __FUNCTION__, __FILE__)

#define GWM_LOG_ERROR(MESSAGE) gwm::Logger::printer((MESSAGE), Logger::LogLevel::LOG_ERR, __FUNCTION__, __FILE__)

namespace gwm
{

class Logger
{
public:

    enum class LogLevel
    {
        LOG_EMERG = 0,
        LOG_ALERT = 1,
        LOG_CRIT = 2,
        LOG_ERR = 3,
        LOG_WARNING = 4,
        LOG_NOTICE = 5,
        LOG_INFO = 6,
        LOG_DEBUG = 7
    };

    using Printer = std::function<void (std::string, LogLevel, std::string, std::string)>;

    static Printer printer;

    static void logging(std::string message, LogLevel level, std::string fun_name, std::string file_name)
    {
        printer(message, level, fun_name, file_name);
    }
};

}



#endif  // GWMLOGGER_H