dmplogger.h 3.1 KB
/**************************************************************************
* file:              dmplogger.h

* Author:            wanzhongping
* Date:              2021-03-03 10:10:39
* Email:             zhongpingw@chinadci.com
* copyright:         广州城市信息研究所有限公司
***************************************************************************/

#ifndef __dmplogger_h__
#define __dmplogger_h__

#include "dmap_core.h"
#include <string>
#include <iostream>
#include <boost/log/attributes/named_scope.hpp>

// Here we define our application severity levels.
enum SeverityLevel
{
  debug_level = 0,
  info_level,
  warn_level,
  error_level,
  critical_level
};

class CORE_EXPORT DmpLogger
{
public:
    void Debug(const std::string &msg);
    void Info(const std::string &msg);
    void Warn(const std::string &msg);
    void Error(const std::string &msg);
    void Critical(const std::string &msg);
    void SetLevel(SeverityLevel level);

    static DmpLogger *Instance();

private:
    DmpLogger();
    ~DmpLogger();
    DmpLogger(const DmpLogger& other) = delete;
    DmpLogger& operator=(const DmpLogger &other) = delete;
    void Init();
};

//对外接口宏
#define LOGGER_DEBUG(msg)                                                   \
                                                                            \
  {                                                                         \
        BOOST_LOG_FUNCTION();                                               \
        DmpLogger::Instance()->Debug(msg);                            \
  }

#define LOGGER_INFO(msg)                                           \
                                                                            \
  {                                                                         \
        BOOST_LOG_FUNCTION();                                               \
        DmpLogger::Instance()->Info(msg);                             \
  }

#define LOGGER_WARN(msg)                                           \
                                                                            \
  {                                                                         \
        BOOST_LOG_FUNCTION();                                               \
        DmpLogger::Instance()->Warn(msg);                             \
  }

#define LOGGER_ERROR(msg)                                           \
                                                                            \
  {                                                                         \
        BOOST_LOG_FUNCTION();                                               \
        DmpLogger::Instance()->Error(msg);                            \
  }

#define LOGGER_CRITICAL(msg)                                           \
                                                                            \
  {                                                                         \
        BOOST_LOG_FUNCTION();                                               \
        DmpLogger::Instance()->Critical(msg);                         \
  }
#endif //__dmplogger_h__