easylogging

easylogging的简单用法

#include "easylogging++.h"

INITIALIZE_EASYLOGGINGPP

class Integer
{
public:
    Integer(int i) : m_underlyingInt(i)
    {
    }
    Integer &operator=(const Integer &integer)
    {
        m_underlyingInt = integer.m_underlyingInt;
        return *this;
    }
    int getInt(void) const { return m_underlyingInt; }

private:
    int m_underlyingInt;
};

// Following line does the trick!
inline MAKE_LOGGABLE(Integer, integer, os)
{
    os << "integer val:" << integer.getInt();
    return os;
}

int main()
{
    // START_EASYLOGGINGPP(argc, argv);

    el::Configurations confFromFile("../../my-logger.conf");
    el::Loggers::reconfigureAllLoggers(confFromFile);
    el::Loggers::addFlag(el::LoggingFlag::ColoredTerminalOutput);

    //自定义类型打印
    Integer count = 5;
    LOG(INFO) << "count:" << count;

    float val = 1.0 / 3;
    LOG(DEBUG) << "this is debug info";
    LOG(INFO) << "float example:" << val;
    LOG(ERROR) << "Error log";
    LOG(WARNING) << "WARNING! log";
    VLOG(1) << "Verbose log 1";
    VLOG(2) << "Verbose log 2";
    return 0;
}

my-logger.conf内容:

* GLOBAL:
    FORMAT                  =   "[%datetime][%level][%logger]%msg"
    FILENAME                =   "/tmp/myeasylog.log"
    ENABLED                 =   true
    TO_FILE                 =   true
    TO_STANDARD_OUTPUT      =   true
    SUBSECOND_PRECISION     =   3
    PERFORMANCE_TRACKING    =   false
    MAX_LOG_FILE_SIZE       =   2097152 ## Throw log files away after 2MB
* DEBUG:
    ENABLED                 =   true ## We will set it to false after development completed
    FORMAT                  =   "[%datetime][%level][%logger][%file:%line:%func]%msg"

global字段定义了所有log level的配置, debug字段则只定义了DEBUG level的配置, 它会覆盖GLOBAL的设置.

  • MAX_LOG_FILE_SIZE
    定义了log文件的最大size, 这里设置的是2MB(1024 * 1024 * 2 = 2097152), 如果log文件的大小超过了2M, easylog会删除log文件, 然后再生成一个新的log文件.

编译:

g++ demo.cpp easylogging++.cc  -o demo.out \
-std=c++11  \
-lpthread \
 -DELPP_DEBUG_ERRORS \
-DELPP_THREAD_SAFE \
-DELPP_STL_LOGGING \
 -DELPP_FEATURE_ALL \
 -DELPP_NO_GLOBAL_LOCK \
 -DELPP_NO_DEFAULT_LOG_FILE

运行结果:
在这里插入图片描述

编译flag设置

有些配置可以在编译时使用宏来控制.

  • ELPP_NO_DEFAULT_LOG_FILE
    默认easylog会生成一个myeasylogging.log文件来存储log信息, 编译时加上这个宏则可以避免生成该文件.示例代码:
g++ demo.cpp easylogging++.cc  -o demo.out   -DELPP_NO_DEFAULT_LOG_FILE -std=c++11  -pthread "
  • ELPP_DISABLE_DEBUG_LOGS
    产品发布时,我们希望debug类型的log不要打印出来,可以添加ELPP_DISABLE_DEBUG_LOGS编译选项在编译期去除debug打印. 注意前面的conf文件里也有个ENABLED选项可以控制debug的输出, 不过那个是在运行时控制的, 一旦编译时设置了ELPP_DISABLE_DEBUG_LOGS, 那么conf文件里的ENABLED就不生效了.

  • ELPP_THREAD_SAFE
    保证线程中打印是安全的, 注意链接时要添加-lpthread

  • DELPP_STL_LOGGING
    打印stl容器, 定义该flag后支持下列容器:
    std::vector std::list std::deque std::queue
    std::stack std::priority_queue std::set std::multiset
    std::pair std::bitset std::map std::multimap
    另外, 如果定义了下列容器还能解锁更多容器:
    Template Macro Needed
    std::array ELPP_LOG_STD_ARRAY
    std::unordered_map ELPP_LOG_UNORDERED_MAP
    std::unordered_multimap ELPP_LOG_UNORDERED_MAP
    std::unordered_set ELPP_LOG_UNORDERED_SET
    std::unordered_multiset ELPP_LOG_UNORDERED_SET

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值