Skip to content
Snippets Groups Projects
LoggerLevel.h 1.55 KiB
#ifndef LOGGER_LEVEL_H
#define LOGGER_LEVEL_H

/**
 * @file LoggerLevel.h
 * @author Bryan BERTHOU (SPhN / CEA Saclay)
 * @date 05 September 2014
 * @version 1.0
 *
 * @class LoggerLevel
 * @brief
 */

#include <string>

#include "../string_utils/StringUtils.h"

namespace ElemUtils {

class LoggerLevel {
public:
    enum Type {
        DEBUG = 0, INFO = 1, WARN = 2, ERROR = 3, OFF = 4, NONE = 5
    };

    LoggerLevel(Type t) :
            m_type(t) {
    }

    std::string toString() const {
        switch (m_type) {
        case DEBUG:
            return "DEBUG";
            break;
        case INFO:
            return "INFO";
            break;
        case WARN:
            return "WARN";
            break;
        case ERROR:
            return "ERROR";
            break;
        case OFF:
            return "OFF";
            break;
        default:
            return "NONE";
        }
    }

    static LoggerLevel fromString(std::string level) {
        StringUtils::to_upperCase(level);
        if (level == "DEBUG") {
            return DEBUG;
        } else if (level == "INFO") {
            return INFO;
        } else if (level == "WARN") {
            return WARN;
        } else if (level == "ERROR") {
            return ERROR;
        } else if (level == "OFF") {
            return OFF;
        }

        return NONE;
    }

    LoggerLevel::Type getType() const {
        return m_type;
    }

    void setType(Type type) {
        m_type = type;
    }

private:
    LoggerLevel::Type m_type;
};

} // namespace ElemUtils

#endif /* LOGGER_LEVEL_H */